Example usage for org.apache.poi.ss.usermodel Row cellIterator

List of usage examples for org.apache.poi.ss.usermodel Row cellIterator

Introduction

In this page you can find the example usage for org.apache.poi.ss.usermodel Row cellIterator.

Prototype

Iterator<Cell> cellIterator();

Source Link

Usage

From source file:org.mifos.dmt.excel.CreateExcel.java

License:Open Source License

private void editConfigSheet(Sheet configSheet) throws DMTException {
    ConfigSheet cfSheet = new ConfigSheet();
    Method[] methods = ConfigSheet.class.getDeclaredMethods();
    for (Method method : methods) {

        if (Modifier.isPublic(method.getModifiers()))
            try {
                method.invoke(cfSheet);//from w  w  w  .  j  av a2 s .c o m
            } catch (Exception e) {
                logger.error(e.getMessage());
                throw new DMTException("error while editing config sheet " + e.getMessage());
            }
    }
    Row configHeader = configSheet.getRow(1);
    Iterator<Cell> x = configHeader.cellIterator();
    while (x.hasNext()) {
        Cell cell = x.next();
        String label = cell.getStringCellValue();
        int index = cell.getColumnIndex();
        populateColumn(configSheet, label, index, cfSheet.excelValues);
    }

}

From source file:org.mousephenotype.cda.utilities.DataReaderXls.java

License:Apache License

/**
 * Returns the next line as a <code>List</code> of <code>String</code> if 
 * there is still data; null otherwise/*  w  ww . jav  a  2  s  .c  om*/
 * @return  the next line as a <code>List</code> of <code>String</code> if 
 * there is still data; null otherwise
 * 
 * @throws IOException
 */
@Override
public List<String> getLine() throws IOException {
    if (rowIterator == null) {
        return null;
    }

    List<String> line = new ArrayList();
    if (!rowIterator.hasNext())
        return null;

    Row row = rowIterator.next();

    Iterator<Cell> cellIterator = row.cellIterator();
    while (cellIterator.hasNext()) {
        Cell cell = cellIterator.next();
        String cellValue = cell.getStringCellValue();
        line.add(cellValue);
    }
    return line;
}

From source file:org.mousephenotype.www.testing.model.DataReaderXls.java

License:Apache License

/**
 * Returns the next line as a <code>List</code> of <code>String</code> if 
 * there is still data; null otherwise//from   ww  w.  j  a va  2 s  .c o  m
 * @return  the next line as a <code>List</code> of <code>String</code> if 
 * there is still data; null otherwise
 * 
 * @throws IOException
 */
@Override
public List<String> getLine() throws IOException {
    List<String> line = new ArrayList();
    if (!rowIterator.hasNext())
        return null;

    Row row = rowIterator.next();

    Iterator<Cell> cellIterator = row.cellIterator();
    while (cellIterator.hasNext()) {
        Cell cell = cellIterator.next();
        String cellValue = cell.getStringCellValue();
        line.add(cellValue);
    }
    return line;
}

From source file:org.obiba.onyx.core.etl.participant.impl.ParticipantReader.java

License:Open Source License

@SuppressWarnings("unchecked")
private void initAttributeNameToColumnIndexMap(ExecutionContext context, Row headerRow) {
    if (headerRow == null) {
        AppointmentUpdateLog.addErrorLog(context,
                new AppointmentUpdateLog(new Date(), AppointmentUpdateLog.Level.ERROR,
                        "Abort updating appointments: Reading file error: Null headerRow"));
        throw new IllegalArgumentException("Null headerRow");
    }//from  w  w w .  ja v  a2 s  .  c  o  m

    attributeNameToColumnIndexMap = new CaseInsensitiveMap();

    Iterator<Cell> cellIter = headerRow.cellIterator();

    while (cellIter.hasNext()) {
        Cell cell = cellIter.next();

        if (cell != null) {
            if (cell.getCellType() != Cell.CELL_TYPE_STRING) {
                AppointmentUpdateLog.addErrorLog(context, new AppointmentUpdateLog(new Date(),
                        AppointmentUpdateLog.Level.ERROR,
                        "Abort updating appointments: Reading file error: Header row contains unexpected cell type"));
                throw new IllegalArgumentException("Header row contains unexpected cell type");
            }

            String columnName = cell.getRichStringCellValue().getString();

            if (columnName != null) {
                String attributeName = columnNameToAttributeNameMap.get(columnName);

                if (attributeName != null) {
                    if (!attributeNameToColumnIndexMap.containsKey(attributeName)) {
                        attributeNameToColumnIndexMap.put(attributeName, cell.getColumnIndex());
                    } else {
                        AppointmentUpdateLog.addErrorLog(context, new AppointmentUpdateLog(new Date(),
                                AppointmentUpdateLog.Level.ERROR,
                                "Abort updating appointments: Reading file error: Duplicate column for field: "
                                        + attributeName));
                        throw new IllegalArgumentException("Duplicate column for field: " + attributeName);
                    }
                }
            }
        }
    }

    log.info("attributeNameToColumnIndexMap: {}", attributeNameToColumnIndexMap);

    checkColumnsForMandatoryAttributesPresent();
}

From source file:org.olat.search.service.document.file.ExcelOOXMLDocument.java

License:Apache License

private void extractContent(final StringBuilder buffy, final XSSFWorkbook document) {
    for (int i = 0; i < document.getNumberOfSheets(); i++) {
        final XSSFSheet sheet = document.getSheetAt(i);
        buffy.append(document.getSheetName(i)).append(' ');

        // Header(s), if present
        extractHeaderFooter(buffy, sheet.getFirstHeader());
        extractHeaderFooter(buffy, sheet.getOddHeader());
        extractHeaderFooter(buffy, sheet.getEvenHeader());

        // Rows and cells
        for (final Object rawR : sheet) {
            final Row row = (Row) rawR;
            for (final Iterator<Cell> ri = row.cellIterator(); ri.hasNext();) {
                final Cell cell = ri.next();

                if (cell.getCellType() == Cell.CELL_TYPE_FORMULA
                        || cell.getCellType() == Cell.CELL_TYPE_STRING) {
                    buffy.append(cell.getRichStringCellValue().getString()).append(' ');
                } else {
                    final XSSFCell xc = (XSSFCell) cell;
                    final String rawValue = xc.getRawValue();
                    if (rawValue != null) {
                        buffy.append(rawValue).append(' ');
                    }/*  www.jav  a 2 s .c  o  m*/

                }

                // Output the comment in the same cell as the content
                final Comment comment = cell.getCellComment();
                if (comment != null) {
                    buffy.append(comment.getString().getString()).append(' ');
                }
            }
        }

        // Finally footer(s), if present
        extractHeaderFooter(buffy, sheet.getFirstFooter());
        extractHeaderFooter(buffy, sheet.getOddFooter());
        extractHeaderFooter(buffy, sheet.getEvenFooter());
    }
}

From source file:org.opencrx.kernel.portal.wizard.ImportAccountsFromXlsController.java

License:BSD License

/**
 * Read import definition (first row in excel sheet).
 * /*from   w  ww .ja v a 2 s . co m*/
 * @param row
 * @param nRow
 * @param maxCell
 * @param recordDefinition
 */
public int readImportDefinition(Row row, int nRow, AccountRecordDefinition recordDefinition,
        Writer importReport) throws IOException {
    int maxCell = 0;
    importReport.append("<tr class=\"gridTableHeaderFull\">");
    importReport.append("  <td>#</td>");
    try {
        Iterator<Cell> cells = row.cellIterator();
        int idxCell = 0;
        while (cells.hasNext()) {
            Cell cell = cells.next();
            idxCell = cell.getColumnIndex();
            if (idxCell > maxCell) {
                maxCell = idxCell;
            }
            try {
                if ((cell.getCellType() == Cell.CELL_TYPE_STRING) && (cell.getStringCellValue() != null)) {
                    boolean isSearchAttribute = false;
                    String cellValue = (cell.getStringCellValue().trim());
                    recordDefinition.getColumns().put(idxCell, cellValue);
                    // get idx of select attributes
                    if (this.ATTR_EXTSTRING0.compareToIgnoreCase(cellValue) == 0) {
                        recordDefinition.setIdxExtString0(idxCell);
                        isSearchAttribute = true;
                    } else if (this.ATTR_FIRSTNAME.compareToIgnoreCase(cellValue) == 0) {
                        recordDefinition.setIdxFirstName(idxCell);
                        isSearchAttribute = true;
                    } else if (this.ATTR_LASTNAME.compareToIgnoreCase(cellValue) == 0) {
                        recordDefinition.setIdxLastName(idxCell);
                        isSearchAttribute = true;
                    } else if (this.ATTR_ALIASNAME.compareToIgnoreCase(cellValue) == 0) {
                        recordDefinition.setIdxAliasName(idxCell);
                        isSearchAttribute = true;
                    } else if (this.ATTR_EMAILADDRESS.compareToIgnoreCase(cellValue) == 0) {
                        recordDefinition.setIdxEMailAddress(idxCell);
                        isSearchAttribute = true;
                    } else if (this.ATTR_COMPANY.compareToIgnoreCase(cellValue) == 0) {
                        recordDefinition.setIdxCompany(idxCell);
                        isSearchAttribute = true;
                    } else if (this.ATTR_DTYPE.compareToIgnoreCase(cellValue) == 0) {
                        recordDefinition.setIdxDtype(idxCell);
                    } else if (this.ATTR_XRI.compareToIgnoreCase(cellValue) == 0) {
                        recordDefinition.setIdxXri(idxCell);
                        isSearchAttribute = true;
                    }
                    importReport.append("<td "
                            + (isSearchAttribute ? "class='searchAttr' title='attribute used for matching'"
                                    : "")
                            + "Col-" + DECIMAL_FORMAT_4.format(idxCell) + EOL_HTML + cellValue + "</td>");
                } else {
                    String cellType = null;
                    switch (cell.getCellType()) {
                    case Cell.CELL_TYPE_BLANK:
                        cellType = "CELL_TYPE_BLANK";
                        break;
                    case Cell.CELL_TYPE_BOOLEAN:
                        cellType = "CELL_TYPE_BOOLEAN";
                        break;
                    case Cell.CELL_TYPE_ERROR:
                        cellType = "CELL_TYPE_ERROR";
                        break;
                    case Cell.CELL_TYPE_FORMULA:
                        cellType = "CELL_TYPE_FORMULA";
                        break;
                    case Cell.CELL_TYPE_NUMERIC:
                        cellType = "CELL_TYPE_NUMERIC";
                        break;
                    case Cell.CELL_TYPE_STRING:
                        cellType = "CELL_TYPE_STRING";
                    }
                    importReport.append("<td class=\"err\">c" + DECIMAL_FORMAT_4.format(idxCell)
                            + " [not a string cell]<br />Type is " + cellType + "</td>");
                }
            } catch (Exception ec) {
                new ServiceException(ec).log();
                importReport.append("<td class=\"err\">c" + DECIMAL_FORMAT_4.format(idxCell)
                        + " [unknown error]<br />" + ec.getMessage() + "</td>");
            }
        }
    } catch (Exception e) {
        new ServiceException(e).log();
        importReport.append("<td class=\"err\">ERROR in Attribute Row!</td>");
    }
    importReport.append("</tr>");
    return maxCell;
}

From source file:org.opencrx.kernel.portal.wizard.ImportAccountsFromXlsController.java

License:BSD License

/**
 * Read account record.//from  w ww . j a  v  a 2 s  .c o  m
 * 
 * @param row
 * @param nRow
 * @param maxCell
 * @param recordDefinition
 * @param record
 * @return
 * @throws ServiceException
 */
public void readAccountRecord(Row row, int nRow, int maxCell, AccountRecord record, Writer importReport,
        List<String> errors) throws ServiceException, IOException {
    importReport.append("<tr class=\"gridTableRowFull\">");
    importReport.append("<td>" + DECIMAL_FORMAT_4.format(nRow) + "</td>");
    AccountRecordDefinition recordDefinition = record.getRecordDefinition();
    Iterator<Cell> cells = row.cellIterator();
    int idxCell = 0;
    while (cells.hasNext()) {
        Cell cell = (Cell) cells.next();
        idxCell = cell.getColumnIndex();
        try {
            if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
                String cellValue = cell.getStringCellValue().trim();
                record.setFieldValue(idxCell, cellValue);
                if (idxCell == recordDefinition.getIdxDtype()) {
                    if (AccountType.Group.name().compareToIgnoreCase(cellValue) == 0) {
                        record.setTypeExplicitlySet(true);
                        record.setAccountType(AccountType.Group);
                        record.appendImportStatus(idxCell, AccountRecord.ImportStatusElement.ATTR_CLASS, " ok");
                    } else if (AccountType.LegalEntity.name().compareToIgnoreCase(cellValue) == 0) {
                        record.setTypeExplicitlySet(true);
                        record.setAccountType(AccountType.LegalEntity);
                        record.appendImportStatus(idxCell, AccountRecord.ImportStatusElement.ATTR_CLASS, " ok");
                    } else if (AccountType.UnspecifiedAccount.name().compareToIgnoreCase(cellValue) == 0) {
                        record.setTypeExplicitlySet(true);
                        record.setAccountType(AccountType.UnspecifiedAccount);
                        record.appendImportStatus(idxCell, AccountRecord.ImportStatusElement.ATTR_CLASS, " ok");
                    } else if (AccountType.Contact.name().compareToIgnoreCase(cellValue) == 0) {
                        record.setTypeExplicitlySet(true);
                        record.setAccountType(AccountType.Contact);
                        record.appendImportStatus(idxCell, AccountRecord.ImportStatusElement.ATTR_CLASS, " ok");
                    }
                } else if (idxCell == recordDefinition.getIdxExtString0()) {
                    record.setExtString0(cellValue);
                } else if (idxCell == recordDefinition.getIdxFirstName()) {
                    record.setFirstName(cellValue);
                } else if (idxCell == recordDefinition.getIdxLastName()) {
                    record.setLastName(cellValue);
                } else if (idxCell == recordDefinition.getIdxAliasName()) {
                    record.setAliasName(cellValue);
                } else if (idxCell == recordDefinition.getIdxEMailAddress()) {
                    record.setEmailAddress(cellValue);
                } else if (idxCell == recordDefinition.getIdxCompany()) {
                    record.setCompany(cellValue);
                } else if (idxCell == recordDefinition.getIdxXri()) {
                    record.setXriExplicitlySet(true);
                    record.setXri(cellValue);
                }
                record.appendImportStatus(idxCell, AccountRecord.ImportStatusElement.CONTENT,
                        (cellValue != null ? (cellValue.replace("\r\n", EOL_HTML)).replace("\n", EOL_HTML)
                                : ""));
            } else if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
                BigDecimal cellValue = new BigDecimal(cell.getNumericCellValue());
                if (idxCell == recordDefinition.getIdxExtString0()) {
                    record.setExtString0(cellValue.toString());
                    record.setFieldValue(idxCell, record.getExtString0());
                } else {
                    record.setFieldValue(idxCell, cellValue);
                }
                record.appendImportStatus(idxCell, AccountRecord.ImportStatusElement.CONTENT,
                        cellValue.toString());
            } else if (cell.getCellType() == Cell.CELL_TYPE_BOOLEAN) {
                boolean cellValue = cell.getBooleanCellValue();
                record.setFieldValue(idxCell, cellValue);
                record.appendImportStatus(idxCell, AccountRecord.ImportStatusElement.CONTENT,
                        (cellValue ? "TRUE" : "FALSE"));
            } else if (cell.getCellType() == Cell.CELL_TYPE_BLANK) {
                record.appendImportStatus(idxCell, AccountRecord.ImportStatusElement.ATTR_CLASS, " empty");
                record.appendImportStatus(idxCell, AccountRecord.ImportStatusElement.CONTENT, "&nbsp;");
            } else {
                record.appendImportStatus(idxCell, AccountRecord.ImportStatusElement.ATTR_CLASS, " err");
                record.appendImportStatus(idxCell, AccountRecord.ImportStatusElement.CONTENT,
                        "r" + DECIMAL_FORMAT_4.format(nRow) + ":c" + DECIMAL_FORMAT_4.format(idxCell)
                                + ": cell type '" + cell.getCellType() + "' not supported<br>");
            }
        } catch (Exception e) {
            ServiceException e0 = new ServiceException(e);
            e0.log();
            errors.add(e0.getMessage());
            record.appendImportStatus(idxCell, AccountRecord.ImportStatusElement.ATTR_CLASS, " err");
            record.appendImportStatus(idxCell, AccountRecord.ImportStatusElement.CONTENT,
                    "r" + DECIMAL_FORMAT_4.format(nRow) + ":c" + DECIMAL_FORMAT_4.format(idxCell)
                            + ": Unknown ERROR. See log.<br>");
        }
    }
}

From source file:org.openmrs.module.kenyaemr.fragment.controller.patient.ImportPatientsListFragmentController.java

License:Open Source License

@SuppressWarnings("deprecation")
public Object submit(HttpServletRequest request) throws Exception {
    // Constant values used across all the code

    MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
    MultipartFile multipartModuleFile = multipartRequest.getFile("upload");
    InputStream inputStream = multipartModuleFile.getInputStream();
    Workbook workbook = new XSSFWorkbook(inputStream);

    Sheet firstSheet = workbook.getSheetAt(0);
    Iterator<Row> iterator = firstSheet.iterator();
    int rowCount = 0;

    while (iterator.hasNext()) {
        Row nextRow = iterator.next();
        Iterator<Cell> cellIterator = nextRow.cellIterator();
        try {/*from  w  ww. j ava  2 s .  c  o  m*/
            if (rowCount > 0) {

                ArrayList<String> legacyData = new ArrayList<String>();
                int columnCount = 0;

                while (cellIterator.hasNext() && columnCount < 31) {
                    Cell cell = cellIterator.next();
                    switch (cell.getCellType()) {
                    case Cell.CELL_TYPE_STRING:
                        legacyData.add(cell.getColumnIndex(), cell.getStringCellValue().trim());
                        break;
                    case Cell.CELL_TYPE_NUMERIC:
                        if (HSSFDateUtil.isCellDateFormatted(cell)) {
                            legacyData.add(cell.getColumnIndex(), String.valueOf(cell.getDateCellValue()));

                        } else {

                            legacyData.add(cell.getColumnIndex(),
                                    NumberToTextConverter.toText(cell.getNumericCellValue()));
                        }
                        break;
                    case Cell.CELL_TYPE_BLANK:
                        legacyData.add(cell.getColumnIndex(), null);
                        break;
                    }
                    columnCount++;
                }
                int i = 0;
                for (String s : legacyData) {
                    i++;
                }
                /*
                 * Start Patient Creation
                 */
                try {
                    if (legacyData.get(0) != null) {
                        Patient toSave = new Patient(); // Creating a new
                        // patient
                        // and
                        // person
                        PersonName personName = new PersonName();
                        PersonAddress personAddress = new PersonAddress();
                        Location location;

                        SimpleDateFormat formatter = new SimpleDateFormat("E MMM dd HH:mm:ss Z yyyy");
                        Date dateBith = new Date();
                        try {
                            dateBith = (Date) formatter.parse(legacyData.get(2));

                        } catch (ParseException e) {
                            e.printStackTrace();
                        }

                        toSave.setGender(legacyData.get(3));
                        toSave.setBirthdate(dateBith);
                        toSave.setBirthdateEstimated(false);
                        toSave.setDead(false);
                        /*
                         * toSave.setDeathDate(deathDate);
                         * toSave.setCauseOfDeath(dead ? Dictionary
                         * .getConcept(CAUSE_OF_DEATH_PLACEHOLDER) : null);
                         */

                        if (legacyData.get(1) != "") {
                            personName.setGivenName(legacyData.get(1));

                            personName.setFamilyName("(NULL)");
                            toSave.addName(personName);
                        }

                        // toSave.
                        personAddress.setAddress1(legacyData.get(9));
                        personAddress.setCountyDistrict(legacyData.get(10));
                        toSave.addAddress(personAddress);

                        PatientWrapper wrapper = new PatientWrapper(toSave);

                        wrapper.getPerson().setTelephoneContact(legacyData.get(8));

                        location = Context.getService(KenyaEmrService.class).getDefaultLocation();

                        if (legacyData.get(4) != null) {
                            wrapper.setPreArtRegistrationNumber(legacyData.get(4), location);
                        }

                        if (legacyData.get(6) != null) {
                            wrapper.setArtRegistrationNumber(legacyData.get(6), location);
                        }

                        if (legacyData.get(5) != null) {
                            wrapper.setNapArtRegistrationNumber(legacyData.get(5), location);
                        }

                        // Algorithm to generate system generated patient
                        // Identifier
                        Calendar now = Calendar.getInstance();
                        String shortName = Context.getAdministrationService()
                                .getGlobalProperty(OpenmrsConstants.GLOBAL_PROPERTY_PATIENT_IDENTIFIER_PREFIX);

                        String noCheck = shortName + String.valueOf(now.get(Calendar.YEAR)).substring(2, 4)
                                + String.valueOf(now.get(Calendar.MONTH) + 1)
                                + String.valueOf(now.get(Calendar.DATE))

                                + String.valueOf(now.get(Calendar.HOUR))
                                + String.valueOf(now.get(Calendar.MINUTE))
                                + String.valueOf(now.get(Calendar.SECOND))
                                + String.valueOf(new Random().nextInt(9999 - 999 + 1));

                        wrapper.setSystemPatientId(noCheck + "-" + generateCheckdigit(noCheck), location);

                        wrapper.setNextOfKinName(legacyData.get(11));
                        wrapper.setNextOfKinContact(legacyData.get(12));

                        if (legacyData.get(13) != null) {
                            wrapper.setPreviousHivTestStatus("Yes");
                            wrapper.setPreviousHivTestPlace(legacyData.get(14));

                            Date capturedTestDate = new Date();
                            try {
                                capturedTestDate = formatter.parse(legacyData.get(13));

                            } catch (ParseException e) {
                                e.printStackTrace();
                            }

                            DateFormat testDate = new SimpleDateFormat("dd-MMMM-yyyy");
                            wrapper.setPreviousHivTestDate(testDate.format(capturedTestDate));
                        } else {
                            wrapper.setPreviousHivTestStatus("No");
                        }

                        wrapper.setPreviousClinicName(legacyData.get(16));

                        // Make sure everyone gets an OpenMRS ID
                        PatientIdentifierType openmrsIdType = MetadataUtils.existing(
                                PatientIdentifierType.class, CommonMetadata._PatientIdentifierType.OPENMRS_ID);
                        PatientIdentifier openmrsId = toSave.getPatientIdentifier(openmrsIdType);

                        if (openmrsId == null) {
                            String generated = Context.getService(IdentifierSourceService.class)
                                    .generateIdentifier(openmrsIdType, "Registration");
                            openmrsId = new PatientIdentifier(generated, openmrsIdType, location);
                            toSave.addIdentifier(openmrsId);

                            if (!toSave.getPatientIdentifier().isPreferred()) {
                                openmrsId.setPreferred(true);
                            }
                        }

                        Patient ret = Context.getPatientService().savePatient(toSave);

                        // Explicitly save all identifier objects including
                        // voided
                        for (PatientIdentifier identifier : toSave.getIdentifiers()) {
                            Context.getPatientService().savePatientIdentifier(identifier);
                        }

                        /*
                         * End Patient Creation
                         */

                        /**
                         ** Start : Visit, Encounter and Program creation for
                         * Patient entered as Legacy Data Visit start date
                         **/
                        Date curDate = new Date();
                        Date dateVisit = null;
                        try {
                            dateVisit = formatter.parse(legacyData.get(18));

                        } catch (ParseException e) {
                            e.printStackTrace();
                        }

                        DateFormat visitDateInExcel = new SimpleDateFormat("dd-MMM-yyyy");
                        String dateCheck = visitDateInExcel.format(dateVisit);
                        SimpleDateFormat mysqlDateTimeFormatter = new SimpleDateFormat("dd-MMM-yy HH:mm:ss");

                        if (legacyData.get(18) != null) {
                            try {
                                dateVisit = mysqlDateTimeFormatter.parse(dateCheck + " " + curDate.getHours()
                                        + ":" + curDate.getMinutes() + ":" + curDate.getSeconds());
                            } catch (ParseException e) {
                                dateVisit = curDate;
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }
                        }

                        Visit visit = new Visit();
                        visit.setPatient(ret);
                        visit.setStartDatetime(dateVisit);
                        visit.setVisitType(
                                MetadataUtils.existing(VisitType.class, CommonMetadata._VisitType.OUTPATIENT));
                        visit.setLocation(Context.getService(KenyaEmrService.class).getDefaultLocation());

                        VisitAttributeType attrType = Context.getService(VisitService.class)
                                .getVisitAttributeTypeByUuid(CommonMetadata._VisitAttributeType.NEW_PATIENT);
                        if (attrType != null) {
                            VisitAttribute attr = new VisitAttribute();
                            attr.setAttributeType(attrType);
                            attr.setVisit(visit);
                            attr.setDateCreated(curDate);
                            attr.setValue(true);
                            visit.addAttribute(attr);
                        }

                        Visit visitSave = Context.getVisitService().saveVisit(visit);

                        // With value text and Date
                        if (legacyData.get(15) != null) {

                            Date dateTransfer = null;
                            if (legacyData.get(17) != null) {
                                try {
                                    dateTransfer = formatter.parse(legacyData.get(17));

                                } catch (ParseException e) {
                                    e.printStackTrace();
                                }
                            }

                            Concept enrollementConcept = Context.getConceptService()
                                    .getConcept(Integer.parseInt(legacyData.get(15)));

                            handleOncePerPatientObs(ret, Dictionary.getConcept(Dictionary.METHOD_OF_ENROLLMENT),
                                    enrollementConcept, "", dateTransfer, null, visitSave);
                        }

                        if (legacyData.get(7) != null) {
                            Concept ingoConcept = Context.getConceptService()
                                    .getConcept(Integer.parseInt(legacyData.get(7)));
                            handleOncePerPatientObs(ret, Dictionary.getConcept(Dictionary.INGO_NAME),
                                    ingoConcept, "", null, null, visitSave);
                        }

                        EncounterType hivEnrollEncType = MetadataUtils.existing(EncounterType.class,
                                HivMetadata._EncounterType.HIV_ENROLLMENT);

                        EncounterType registrationEncType = MetadataUtils.existing(EncounterType.class,
                                CommonMetadata._EncounterType.REGISTRATION);

                        Encounter hivEnrollmentEncounter = new Encounter();

                        hivEnrollmentEncounter.setEncounterType(hivEnrollEncType);
                        hivEnrollmentEncounter.setPatient(ret);
                        hivEnrollmentEncounter
                                .setLocation(Context.getService(KenyaEmrService.class).getDefaultLocation());

                        hivEnrollmentEncounter.setDateCreated(curDate);
                        hivEnrollmentEncounter.setEncounterDatetime(dateVisit);

                        hivEnrollmentEncounter
                                .setForm(MetadataUtils.existing(Form.class, HivMetadata._Form.HIV_ENROLLMENT));
                        hivEnrollmentEncounter.setVisit(visitSave);
                        hivEnrollmentEncounter.setVoided(false);
                        Encounter enHivNew = Context.getEncounterService()
                                .saveEncounter(hivEnrollmentEncounter);

                        PatientProgram patientProgram = new PatientProgram();
                        patientProgram.setPatient(ret);
                        patientProgram
                                .setProgram(MetadataUtils.existing(Program.class, HivMetadata._Program.HIV));
                        patientProgram.setDateEnrolled(enHivNew.getEncounterDatetime());
                        patientProgram.setDateCreated(curDate);
                        Context.getProgramWorkflowService().savePatientProgram(patientProgram);

                        Encounter personalEncounter = new Encounter();

                        personalEncounter.setEncounterType(hivEnrollEncType);
                        personalEncounter.setPatient(ret);

                        personalEncounter.setDateCreated(curDate);
                        personalEncounter.setEncounterDatetime(dateVisit);
                        personalEncounter
                                .setLocation(Context.getService(KenyaEmrService.class).getDefaultLocation());

                        personalEncounter.setForm(
                                MetadataUtils.existing(Form.class, Metadata.Form.HIV_PERSONAL_HISTORY));
                        personalEncounter.setVisit(visitSave);
                        personalEncounter.setVoided(false);
                        Encounter enpersonalrecordresultNew = Context.getEncounterService()
                                .saveEncounter(personalEncounter);
                        if (legacyData.get(19) != null) {

                            Concept literate = Context.getConceptService()
                                    .getConcept(Integer.parseInt(legacyData.get(19)));
                            handleOncePerPatientObs(ret, Dictionary.getConcept(Dictionary.LITERATE), literate,
                                    "", null, null, enpersonalrecordresultNew, null, visitSave);

                        }
                        if (legacyData.get(21) != null) {

                            String value = legacyData.get(21);

                            String[] valueList = value.split("\\s*,\\s*");

                            for (String riskname : valueList) {

                                Concept riskConcept = Context.getConceptService().getConcept(riskname);

                                handleOncePerPatientObs(ret, Dictionary.getConcept(Dictionary.HIV_RISK_FACTOR),
                                        riskConcept, "", null, null, enpersonalrecordresultNew, null,
                                        visitSave);

                            }

                        }
                        if (legacyData.get(22) != null) {

                            Concept idssubstituion = Context.getConceptService()
                                    .getConcept(Integer.parseInt(legacyData.get(22)));
                            handleOncePerPatientObs(ret, Dictionary.getConcept(Dictionary.IDU_PERSONAL_HISTORY),
                                    idssubstituion, "", null, null, enpersonalrecordresultNew, null, visitSave);

                        }

                        if (legacyData.get(23) != null) {

                            Concept idssubstituionvalue = Context.getConceptService()
                                    .getConcept(Integer.parseInt(legacyData.get(23)));
                            handleOncePerPatientObs(ret,
                                    Dictionary.getConcept(Dictionary.IDU_NAME_PERSONAL_HISTORY),
                                    idssubstituionvalue, "", null, null, enpersonalrecordresultNew, null,
                                    visitSave);

                        }
                        if (legacyData.get(29) != null) {

                            Concept employedvalue = Context.getConceptService()
                                    .getConcept(Integer.parseInt(legacyData.get(29)));
                            handleOncePerPatientObs(ret, Dictionary.getConcept(Dictionary.EMPLOYED),
                                    employedvalue, "", null, null, enpersonalrecordresultNew, null, visitSave);
                        }

                        if (legacyData.get(30) != null) {

                            Concept alcoholicvalue = Context.getConceptService()
                                    .getConcept(Integer.parseInt(legacyData.get(30)));
                            handleOncePerPatientObs(ret, Dictionary.getConcept(Dictionary.ALCOHOLIC_TYPE),
                                    alcoholicvalue, "", null, null, enpersonalrecordresultNew, null, visitSave);
                        }

                        Encounter familyEncounter = new Encounter();

                        familyEncounter.setEncounterType(registrationEncType);
                        familyEncounter.setPatient(ret);

                        familyEncounter.setDateCreated(curDate);
                        familyEncounter.setEncounterDatetime(dateVisit);
                        familyEncounter
                                .setLocation(Context.getService(KenyaEmrService.class).getDefaultLocation());

                        familyEncounter
                                .setForm(MetadataUtils.existing(Form.class, Metadata.Form.HIV_FAMILY_HISTORY));
                        familyEncounter.setVisit(visitSave);
                        familyEncounter.setVoided(false);
                        Encounter enfamilyrecordresultNew = Context.getEncounterService()
                                .saveEncounter(familyEncounter);
                        if (legacyData.get(20) != null) {

                            Concept martalstatus = Context.getConceptService()
                                    .getConcept(Integer.parseInt(legacyData.get(20)));
                            handleOncePerPatientObs(ret, Dictionary.getConcept(Dictionary.CIVIL_STATUS),
                                    martalstatus, "", null, null, enfamilyrecordresultNew, null, visitSave);
                        }

                        Encounter drugEncounter = new Encounter();

                        drugEncounter.setEncounterType(hivEnrollEncType);
                        drugEncounter.setPatient(ret);

                        drugEncounter.setDateCreated(curDate);
                        drugEncounter.setEncounterDatetime(dateVisit);
                        drugEncounter
                                .setLocation(Context.getService(KenyaEmrService.class).getDefaultLocation());

                        drugEncounter
                                .setForm(MetadataUtils.existing(Form.class, Metadata.Form.HIV_DRUG_HISTORY));
                        drugEncounter.setVisit(visitSave);
                        drugEncounter.setVoided(false);
                        Encounter endrugrecordresultNew = Context.getEncounterService()
                                .saveEncounter(drugEncounter);

                        if (legacyData.get(24) != null) {

                            Concept drughistoryart = Context.getConceptService()
                                    .getConcept(Integer.parseInt(legacyData.get(24)));

                            handleOncePerPatientObs(ret,
                                    Dictionary.getConcept(Dictionary.DRUG_HISTORY_ART_RECEIVED), drughistoryart,
                                    "", null, null, endrugrecordresultNew, null, visitSave);

                        }

                        if (legacyData.get(25) != null) {

                            Concept drughistoryarttype = Context.getConceptService()
                                    .getConcept(Integer.parseInt(legacyData.get(25)));

                            handleOncePerPatientObs(ret,
                                    Dictionary.getConcept(Dictionary.DRUG_HISTORY_ART_RECEIVED_TYPE),
                                    drughistoryarttype, "", null, null, endrugrecordresultNew, null, visitSave);

                        }

                        if (legacyData.get(26) != null && legacyData.get(27) != null
                                && legacyData.get(28) != null) {

                            boolean value = false;
                            Obs drugtreatmentGroup = new Obs();
                            drugtreatmentGroup.setPerson(ret);
                            drugtreatmentGroup.setConcept(Dictionary.getConcept(Dictionary.DRUG_HISTORY_GROUP));

                            drugtreatmentGroup.setObsDatetime(endrugrecordresultNew.getEncounterDatetime());

                            // Added value coded as per default obs object
                            // format.
                            //drugtreatmentGroup.setValueCoded(null);
                            // drugtreatmentGroup.setValueText(text);
                            drugtreatmentGroup.setLocation(
                                    Context.getService(KenyaEmrService.class).getDefaultLocation());

                            drugtreatmentGroup.setEncounter(endrugrecordresultNew);

                            drugtreatmentGroup.setValueBoolean(value);
                            Obs drugtreat = Context.getObsService().saveObs(drugtreatmentGroup,
                                    "KenyaEMR History Details");
                            if (legacyData.get(26) != null) {

                                Concept place = Context.getConceptService()
                                        .getConcept(Integer.parseInt(legacyData.get(26)));
                                handleOncePerPatientObs(ret,
                                        Dictionary.getConcept(Dictionary.DRUG_HISTORY_ART_RECEIVED_PLACE),
                                        place, "", null, null, endrugrecordresultNew, drugtreat, visitSave);
                            }

                            if (legacyData.get(27) != null) {

                                Concept drugarv = Context.getConceptService()
                                        .getConcept(Integer.parseInt(legacyData.get(27)));
                                handleOncePerPatientObs(ret,
                                        Dictionary.getConcept(Dictionary.DRUG_REGIMEN_DRUG_HISTORY), drugarv,
                                        "", null, null, endrugrecordresultNew, drugtreat, visitSave);
                            }

                            if (legacyData.get(28) != null) {

                                Double dur = 0.0;
                                Integer durationreslt = 0;

                                durationreslt = Integer.parseInt(legacyData.get(28));
                                dur = durationreslt.doubleValue();
                                handleOncePerPatientObs(ret, Dictionary.getConcept(Dictionary.DRUG_DURATION),
                                        null, null, null, dur, endrugrecordresultNew, drugtreat, visitSave);

                            }

                        }

                        /*
                         * End : Visit, Encounter and Program creation for
                         * Patient entered as Legacy Data
                         */

                    }
                } catch (IndexOutOfBoundsException e) {
                    break;
                }
            }
        } catch (IndexOutOfBoundsException e) {
            break;
        }

        rowCount++;
    }

    int noOfSheets = workbook.getNumberOfSheets();

    if (noOfSheets > 1) {
        Sheet secondSheet = workbook.getSheetAt(1);
        Iterator<Row> iteratorSecond = secondSheet.iterator();
        int rowCountVisit = 0;
        while (iteratorSecond.hasNext()) {
            Row nextRow = iteratorSecond.next();
            Iterator<Cell> cellIterator = nextRow.cellIterator();
            try {

                if (rowCountVisit > 0) {
                    ArrayList<String> legacyData = new ArrayList<String>();
                    int columnCount = 0;
                    while (cellIterator.hasNext() && columnCount < 44) {
                        Cell cell = cellIterator.next();

                        switch (cell.getCellType()) {
                        case Cell.CELL_TYPE_STRING:
                            legacyData.add(cell.getColumnIndex(), cell.getStringCellValue().trim());
                            break;
                        case Cell.CELL_TYPE_NUMERIC:
                            if (HSSFDateUtil.isCellDateFormatted(cell)) {
                                legacyData.add(cell.getColumnIndex(), String.valueOf(cell.getDateCellValue()));

                            } else {

                                legacyData.add(cell.getColumnIndex(),
                                        NumberToTextConverter.toText(cell.getNumericCellValue()));

                            }
                            break;
                        case Cell.CELL_TYPE_BLANK:
                            legacyData.add(cell.getColumnIndex(), "");
                            break;
                        }
                        columnCount++;
                    }

                    int i = 0;
                    for (String s : legacyData) {
                        i++;
                    }
                    Person person = null;
                    Patient patient = null;
                    PatientWrapper wrapper = null;
                    int count = 0;
                    Location location;
                    location = Context.getService(KenyaEmrService.class).getDefaultLocation();

                    if (legacyData.get(3) != null && legacyData.get(3) != "") {
                        try {

                            if (!legacyData.get(0).isEmpty()) {
                                PatientIdentifierType pt = Context.getPatientService()
                                        .getPatientIdentifierTypeByUuid("d59d0f67-4a05-4e41-bfad-342da68feb6f");

                                List<PatientIdentifier> patList = Context.getPatientService()
                                        .getPatientIdentifiers(legacyData.get(0).toString(), pt);

                                for (PatientIdentifier p : patList) {
                                    patient = Context.getPatientService()
                                            .getPatient(p.getPatient().getPatientId());
                                    wrapper = new PatientWrapper(patient);
                                    person = Context.getPersonService().getPerson(patient);
                                }
                            }

                            else if (!legacyData.get(1).isEmpty()) {
                                PatientIdentifierType pt = Context.getPatientService()
                                        .getPatientIdentifierTypeByUuid("3e5493e8-e76e-4d3f-a166-9a88b40747fa");

                                List<PatientIdentifier> patList = Context.getPatientService()
                                        .getPatientIdentifiers(legacyData.get(1).toString(), pt);

                                for (PatientIdentifier p : patList) {

                                    patient = Context.getPatientService()
                                            .getPatient(p.getPatient().getPatientId());
                                    wrapper = new PatientWrapper(patient);
                                    person = Context.getPersonService().getPerson(patient);
                                }

                            } else if (!legacyData.get(2).isEmpty()) {
                                PatientIdentifierType pt = Context.getPatientService()
                                        .getPatientIdentifierTypeByUuid("9e10c5d6-a58c-4236-8b65-b6b932beff1a");
                                List<PatientIdentifier> patList = Context.getPatientService()
                                        .getPatientIdentifiers(legacyData.get(2).toString(), pt);
                                for (PatientIdentifier p : patList) {
                                    patient = Context.getPatientService()
                                            .getPatient(p.getPatient().getPatientId());
                                    wrapper = new PatientWrapper(patient);
                                    person = Context.getPersonService().getPerson(patient);
                                }
                            } else {
                                break;
                            }

                            SimpleDateFormat formatter = new SimpleDateFormat("E MMM dd HH:mm:ss Z yyyy");
                            Date curDate = new Date();
                            Date dateVisit = null;
                            try {
                                if (legacyData.get(3) != null && legacyData.get(3) != "") {
                                    dateVisit = formatter.parse(legacyData.get(3));
                                }

                            } catch (ParseException e) {

                                e.printStackTrace();
                            }
                            DateFormat visitDateInExcel = new SimpleDateFormat("dd-MMM-yyyy");
                            String dateCheck = "";
                            SimpleDateFormat mysqlDateTimeFormatter = new SimpleDateFormat(
                                    "dd-MMM-yy HH:mm:ss");
                            if (legacyData.get(3) != null && legacyData.get(3) != "") {
                                Date curDatenew = new Date();
                                dateCheck = visitDateInExcel.format(dateVisit);
                                try {
                                    dateVisit = mysqlDateTimeFormatter
                                            .parse(dateCheck + " " + curDatenew.getHours() + ":"
                                                    + curDatenew.getMinutes() + ":" + curDatenew.getSeconds());

                                } catch (ParseException e) {
                                    dateVisit = curDatenew;
                                    e.printStackTrace();
                                }
                            }

                            List<Visit> visits = Context.getVisitService().getActiveVisitsByPatient(patient);

                            Visit v = new Visit();
                            if (visits.isEmpty()) {
                                Visit visit = new Visit();
                                visit.setPatient(patient);
                                visit.setStartDatetime(dateVisit);
                                visit.setVisitType(MetadataUtils.existing(VisitType.class,
                                        CommonMetadata._VisitType.OUTPATIENT));
                                visit.setLocation(
                                        Context.getService(KenyaEmrService.class).getDefaultLocation());
                                if (person.getDead() == false) {
                                    v = Context.getVisitService().saveVisit(visit);
                                }

                            } else {
                                for (Visit vLoop : visits) {
                                    v = vLoop;

                                }
                            }

                            if (v.getId() != null) {
                                EncounterType artEnrollEncType = MetadataUtils.existing(EncounterType.class,
                                        ArtMetadata._EncounterType.INITIATE_ART);
                                Encounter artEncounter = new Encounter();

                                artEncounter.setEncounterType(artEnrollEncType);
                                artEncounter.setPatient(patient);
                                artEncounter.setLocation(
                                        Context.getService(KenyaEmrService.class).getDefaultLocation());

                                artEncounter.setDateCreated(curDate);
                                artEncounter.setEncounterDatetime(dateVisit);

                                artEncounter.setForm(
                                        MetadataUtils.existing(Form.class, ArtMetadata._Form.INITIATE_ART));
                                artEncounter.setVisit(v);

                                artEncounter.setVoided(false);
                                if (!legacyData.get(9).isEmpty()) {

                                    Encounter enartNew = Context.getEncounterService()
                                            .saveEncounter(artEncounter);
                                }
                                PatientProgram pp = new PatientProgram();
                                if (!legacyData.get(9).isEmpty()) {

                                    pp.setPatient(patient);
                                    pp.setProgram(
                                            MetadataUtils.existing(Program.class, ArtMetadata._Program.ART));

                                    Date artStartDate = null;
                                    Date curDatenew = new Date();

                                    try {
                                        artStartDate = (Date) formatter.parse(legacyData.get(9));
                                        dateCheck = visitDateInExcel.format(artStartDate);
                                        artStartDate = mysqlDateTimeFormatter.parse(dateCheck + " "
                                                + curDatenew.getHours() + ":" + curDatenew.getMinutes() + ":"
                                                + curDatenew.getSeconds());
                                        pp.setDateEnrolled(artStartDate);
                                    } catch (ParseException e) {
                                        e.printStackTrace();
                                    }

                                    if (pp.getDateEnrolled() != null && pp.getDateCompleted() == null) {
                                        PatientProgram program = Context.getProgramWorkflowService()
                                                .savePatientProgram(pp);
                                    }

                                }

                                /*
                                 * Changes code
                                 */
                                String reg = "";

                                if (!legacyData.get(4).isEmpty()) {

                                    Concept regimenConcept = Context.getConceptService()
                                            .getConcept(Integer.parseInt(legacyData.get(4)));
                                    reg = reg.concat(regimenConcept.getName().toString());

                                    KenyaEmrService kes = (KenyaEmrService) Context
                                            .getService(KenyaEmrService.class);

                                    List<DrugOrderProcessed> dopp = kes.getDrugOrderProcessedByPatient(patient);

                                    // Created drug order processed
                                    DrugOrderProcessed orderprocess = new DrugOrderProcessed();

                                    orderprocess.setPatient(patient);
                                    orderprocess.setDrugRegimen(reg);
                                    orderprocess.setCreatedDate(dateVisit);
                                    orderprocess.setStartDate(dateVisit);
                                    orderprocess.setVisit(v);
                                    orderprocess.setRoute(Context.getConceptService()
                                            .getConceptByUuid("160240AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"));
                                    Integer tablet = 0;

                                    if (legacyData.get(4).equals("163494") || legacyData.get(4).equals("163495")
                                            || legacyData.get(4).equals("163496")
                                            || legacyData.get(4).equals("162959")
                                            || legacyData.get(4).equals("163503")
                                            || legacyData.get(4).equals("163505")
                                            || legacyData.get(4).equals("163506")
                                            || legacyData.get(4).equals(" 163507")
                                            || legacyData.get(4).equals("163508")
                                            || legacyData.get(4).equals("163510")) {

                                        orderprocess.setNoOfTablet(1);
                                        tablet = Integer.parseInt(legacyData.get(6));
                                    } else {
                                        tablet = Integer.parseInt(legacyData.get(6)) * 2;
                                        orderprocess.setNoOfTablet(2);
                                    }

                                    if (!legacyData.get(6).isEmpty()) {
                                        orderprocess.setDurationPreProcess(Integer.parseInt(legacyData.get(6)));

                                        orderprocess.setQuantityPostProcess(tablet);

                                        orderprocess.setProcessedStatus(true);
                                        try {
                                            Date curDat = new Date();

                                            dateVisit = mysqlDateTimeFormatter
                                                    .parse(dateCheck + " " + curDat.getHours() + ":"
                                                            + curDat.getMinutes() + ":" + curDat.getSeconds());

                                            orderprocess.setProcessedDate(dateVisit);

                                        } catch (ParseException e) {
                                            e.printStackTrace();
                                        }
                                    }

                                    if (!legacyData.get(5).isEmpty()) {
                                        orderprocess.setDose(legacyData.get(5));
                                        orderprocess.setDoseRegimen(legacyData.get(5));
                                    }
                                    String cahngeRegimenType = "";
                                    if (patient.getAge() > 14) {
                                        for (String firstline : firstlineConcept) {
                                            if (legacyData.get(4).equals(firstline)) {
                                                orderprocess
                                                        .setTypeOfRegimen("First line Anti-retoviral drugs");
                                                cahngeRegimenType = "First line Anti-retoviral drugs";
                                            }
                                        }
                                        for (String secndline : secondlineConcept) {
                                            if (legacyData.get(4).equals(secndline)) {
                                                orderprocess.setTypeOfRegimen("Second line ART");
                                                cahngeRegimenType = "Second line ART";
                                            }
                                        }
                                        for (String thirdline : thirdlineConcept) {
                                            if (legacyData.get(4).equals(thirdline)) {
                                                orderprocess.setTypeOfRegimen("HIV/HBV co-infection");
                                                cahngeRegimenType = "HIV/HBV co-infection";
                                            }
                                        }
                                    } else {
                                        for (String child : childArvConcept) {
                                            if (legacyData.get(4).equals(child)) {
                                                orderprocess.setTypeOfRegimen("ARV drugs for child");
                                                cahngeRegimenType = "ARV drugs for child";

                                            }
                                        }
                                    }

                                    if (dopp.size() == 0) {
                                        orderprocess.setRegimenChangeType("Start");
                                        // Encounter Created
                                        EncounterType regEnrollEncType = MetadataUtils.existing(
                                                EncounterType.class,
                                                CommonMetadata._EncounterType.REGIMEN_ORDER);

                                        Encounter regEncounter = new Encounter();
                                        regEncounter.setEncounterType(regEnrollEncType);
                                        regEncounter.setPatient(patient);
                                        regEncounter.setLocation(Context.getLocationService()
                                                .getLocationByUuid("8d6c993e-c2cc-11de-8d13-0010c6dffd0f"));

                                        regEncounter.setDateCreated(curDate);
                                        regEncounter.setEncounterDatetime(dateVisit);
                                        regEncounter.setVisit(v);

                                        regEncounter.setVoided(false);

                                        // Save encounter
                                        Encounter enregNew = Context.getEncounterService()
                                                .saveEncounter(regEncounter);

                                        // Create order
                                        Order ordersave = new Order();

                                        // Create Drug order
                                        DrugOrder dod = new DrugOrder();

                                        dod.setOrderType(Context.getOrderService().getOrderType(2));
                                        dod.setConcept(Context.getConceptService()
                                                .getConcept(Integer.parseInt(legacyData.get(4))));
                                        dod.setEncounter(enregNew);

                                        dod.setStartDate(dateVisit);
                                        dod.setDateCreated(curDate);
                                        dod.setPatient(patient);
                                        dod.setUnits("tab");
                                        if (legacyData.get(4).equals("163494")
                                                || legacyData.get(4).equals("163495")
                                                || legacyData.get(4).equals("163496")
                                                || legacyData.get(4).equals("162959")
                                                || legacyData.get(4).equals("163503")
                                                || legacyData.get(4).equals("163505")
                                                || legacyData.get(4).equals("163506")
                                                || legacyData.get(4).equals(" 163507")
                                                || legacyData.get(4).equals("163508")
                                                || legacyData.get(4).equals("163510")) {

                                            dod.setFrequency("od");
                                        } else {
                                            dod.setFrequency("bd");
                                        }

                                        // /Save drug order
                                        ordersave = Context.getOrderService().saveOrder(dod);

                                        orderprocess.setDrugOrder(dod);

                                    }

                                    if (dopp.size() > 0) {
                                        DrugOrderProcessed dd = dopp.get(dopp.size() - 1);
                                        // for (DrugOrderProcessed dd :
                                        // dopp) {
                                        if (dd.getDrugRegimen().equals(reg) && !legacyData.get(5).isEmpty()
                                                && dd.getDoseRegimen().equals(legacyData.get(5))
                                                && dd.getTypeOfRegimen().equals(cahngeRegimenType)) {
                                            orderprocess.setRegimenChangeType("Continue");
                                            orderprocess.setDrugOrder(dd.getDrugOrder());

                                        } else {
                                            if (dd.getTypeOfRegimen().equals(cahngeRegimenType)) {
                                                orderprocess.setRegimenChangeType("Substitue");
                                            } else if (dd.getTypeOfRegimen().equals(cahngeRegimenType)) {
                                                orderprocess.setRegimenChangeType("Switch");
                                            }
                                            // Encounter Created
                                            EncounterType regEnrollEncType = MetadataUtils.existing(
                                                    EncounterType.class,
                                                    CommonMetadata._EncounterType.REGIMEN_ORDER);

                                            Encounter regEncounter = new Encounter();
                                            regEncounter.setEncounterType(regEnrollEncType);
                                            regEncounter.setPatient(patient);
                                            regEncounter.setLocation(Context.getLocationService()
                                                    .getLocationByUuid("8d6c993e-c2cc-11de-8d13-0010c6dffd0f"));

                                            regEncounter.setDateCreated(curDate);
                                            regEncounter.setEncounterDatetime(dateVisit);
                                            regEncounter.setVisit(v);

                                            regEncounter.setVoided(false);

                                            // Save encounter
                                            Encounter enregNew = Context.getEncounterService()
                                                    .saveEncounter(regEncounter);

                                            // Create order
                                            Order ordersave = new Order();

                                            // Create Drug order
                                            DrugOrder dod = new DrugOrder();

                                            dod.setOrderType(Context.getOrderService().getOrderType(2));
                                            dod.setConcept(Context.getConceptService()
                                                    .getConcept(Integer.parseInt(legacyData.get(4))));
                                            dod.setEncounter(enregNew);

                                            dod.setStartDate(dateVisit);
                                            dod.setDateCreated(curDate);
                                            dod.setPatient(patient);
                                            dod.setUnits("tab");
                                            if (legacyData.get(4).equals("163494")
                                                    || legacyData.get(4).equals("163495")
                                                    || legacyData.get(4).equals("163496")
                                                    || legacyData.get(4).equals("162959")
                                                    || legacyData.get(4).equals("163503")
                                                    || legacyData.get(4).equals("163505")
                                                    || legacyData.get(4).equals("163506")
                                                    || legacyData.get(4).equals(" 163507")
                                                    || legacyData.get(4).equals("163508")
                                                    || legacyData.get(4).equals("163510")) {

                                                dod.setFrequency("od");
                                            } else {
                                                dod.setFrequency("bd");
                                            }

                                            // /Save drug order
                                            ordersave = Context.getOrderService().saveOrder(dod);

                                            orderprocess.setDrugOrder(dod);

                                        }

                                    }

                                    kes.saveDrugOrderProcessed(orderprocess);

                                    Order oo = new Order();
                                    DrugOrderProcessed drugoo = new DrugOrderProcessed();
                                    for (DrugOrderProcessed ooo : dopp) {
                                        if (!legacyData.get(36).isEmpty()) {
                                            Date discontinuedDate = new Date();
                                            discontinuedDate = (Date) formatter.parse(legacyData.get(36));
                                            String dtechk = visitDateInExcel.format(discontinuedDate);
                                            try {
                                                Date curDat = new Date();
                                                List<Visit> visitdrug = Context.getVisitService()
                                                        .getVisitsByPatient(patient);

                                                for (Visit visdr : visitdrug) {
                                                    if (visdr.getStopDatetime() != null) {
                                                        if (drugoo.getDiscontinuedDate() == null) {
                                                            discontinuedDate = mysqlDateTimeFormatter
                                                                    .parse(dtechk + " " + curDat.getHours()
                                                                            + ":" + curDat.getMinutes() + ":"
                                                                            + curDat.getSeconds());

                                                            drugoo.setDiscontinuedDate(dateVisit);
                                                            break;
                                                        }
                                                    }
                                                }

                                            } catch (ParseException e) {
                                                e.printStackTrace();
                                            }

                                        }
                                        if (!legacyData.get(35).isEmpty()) {
                                            List<Visit> visitdrug = Context.getVisitService()
                                                    .getVisitsByPatient(patient);
                                            Concept discontinuedReason = Context.getConceptService()
                                                    .getConcept(Integer.parseInt(legacyData.get(35)));

                                            for (Visit visdr : visitdrug) {
                                                Order orderPrevious = Context.getOrderService()
                                                        .getOrder(ooo.getDrugOrder().getOrderId());
                                                if (visdr.getStopDatetime() != null) {
                                                    if (orderPrevious.getDiscontinuedReason() == null) {
                                                        if (!ooo.getDrugRegimen()
                                                                .equals(drugoo.getDrugRegimen())) {
                                                            drugoo.setDiscontinuedReason(discontinuedReason);
                                                            orderPrevious.setDiscontinued(true);
                                                            orderPrevious
                                                                    .setDiscontinuedBy(Context.getUserService()
                                                                            .getUserByUsername("admin"));
                                                            orderPrevious
                                                                    .setDiscontinuedReason(discontinuedReason);
                                                            orderPrevious.setDiscontinuedDate(dateVisit);
                                                            Context.getOrderService().saveOrder(orderPrevious);
                                                            break;
                                                        }
                                                    }
                                                }
                                            }
                                        }

                                        drugoo = ooo;

                                        kes.saveDrugOrderProcessed(drugoo);
                                    }
                                }

                                EncounterType labEnrollEncType = MetadataUtils.existing(EncounterType.class,
                                        CommonMetadata._EncounterType.LAB_ORDERS);
                                Encounter labEncounter = new Encounter();

                                labEncounter.setEncounterType(labEnrollEncType);
                                labEncounter.setPatient(patient);
                                labEncounter.setLocation(
                                        Context.getService(KenyaEmrService.class).getDefaultLocation());

                                labEncounter.setDateCreated(curDate);
                                labEncounter.setEncounterDatetime(dateVisit);

                                labEncounter.setForm(
                                        MetadataUtils.existing(Form.class, CommonMetadata._Form.LAB_ORDERS));
                                labEncounter.setVisit(v);

                                labEncounter.setVoided(false);

                                Encounter enlabNew = Context.getEncounterService().saveEncounter(labEncounter);

                                if (!legacyData.get(7).isEmpty()) {
                                    Concept labOrder = Dictionary.getConcept(Dictionary.CD4_COUNT);

                                    handleOncePerPatientObs(patient,
                                            Dictionary.getConcept(Dictionary.lABORATORY_ORDER), labOrder, "",
                                            null, null, enlabNew, null, v);

                                }
                                if (!legacyData.get(39).isEmpty()) {
                                    Concept labOrder = Context.getConceptService()
                                            .getConceptByUuid("122858AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");

                                    handleOncePerPatientObs(patient,
                                            Dictionary.getConcept(Dictionary.lABORATORY_ORDER), labOrder, "",
                                            null, null, enlabNew, null, v);

                                }
                                if (!legacyData.get(38).isEmpty()) {
                                    Concept labOrder = Context.getConceptService()
                                            .getConceptByUuid("654AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");

                                    handleOncePerPatientObs(patient,
                                            Dictionary.getConcept(Dictionary.lABORATORY_ORDER), labOrder, "",
                                            null, null, enlabNew, null, v);

                                }
                                if (!legacyData.get(8).isEmpty()) {

                                    Concept labviralOrder = Dictionary.getConcept(Dictionary.HIV_VIRAL_LOAD);

                                    handleOncePerPatientObs(patient,
                                            Dictionary.getConcept(Dictionary.lABORATORY_ORDER), labviralOrder,
                                            "", null, null, enlabNew, null, v);

                                }

                                if (!legacyData.get(37).isEmpty()) {

                                    Concept labhaemoOrder = Context.getConceptService()
                                            .getConceptByUuid("1019AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");

                                    handleOncePerPatientObs(patient,
                                            Dictionary.getConcept(Dictionary.lABORATORY_ORDER), labhaemoOrder,
                                            "", null, null, enlabNew, null, v);

                                }
                                if (!legacyData.get(40).isEmpty()) {

                                    Concept labcreatinineOrder = Context.getConceptService()
                                            .getConceptByUuid("790AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");
                                    handleOncePerPatientObs(patient,
                                            Dictionary.getConcept(Dictionary.lABORATORY_ORDER),
                                            labcreatinineOrder, "", null, null, enlabNew, null, v);

                                }
                                EncounterType labresultEnrollEncType = MetadataUtils.existing(
                                        EncounterType.class, CommonMetadata._EncounterType.LAB_RESULTS);
                                Encounter labresultEncounter = new Encounter();

                                labresultEncounter.setEncounterType(labresultEnrollEncType);
                                labresultEncounter.setPatient(patient);

                                labresultEncounter.setDateCreated(curDate);
                                labresultEncounter.setEncounterDatetime(dateVisit);
                                labresultEncounter.setVisit(v);

                                labresultEncounter.setVoided(false);
                                Encounter enlabresultNew = Context.getEncounterService()
                                        .saveEncounter(labresultEncounter);

                                if (!legacyData.get(7).isEmpty()) {

                                    String cd4Result = legacyData.get(7);
                                    Double cd4Count = Double.parseDouble(cd4Result);
                                    handleOncePerPatientObs(patient,
                                            Dictionary.getConcept(Dictionary.CD4_COUNT), null,
                                            legacyData.get(7), null, cd4Count, enlabresultNew, null, v);

                                }
                                if (!legacyData.get(37).isEmpty()) {

                                    String labResult = legacyData.get(37);

                                    handleOncePerPatientObs(patient,
                                            Context.getConceptService()
                                                    .getConceptByUuid("1019AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"),
                                            null, labResult, null, null, enlabresultNew, null, v);

                                }
                                if (!legacyData.get(38).isEmpty()) {

                                    String labResult = legacyData.get(38);
                                    Double lab = Double.parseDouble(labResult);

                                    handleOncePerPatientObs(patient,
                                            Context.getConceptService()
                                                    .getConceptByUuid("122858AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"),
                                            null, labResult, null, lab, enlabresultNew, null, v);

                                }
                                if (!legacyData.get(39).isEmpty()) {

                                    String labResult = legacyData.get(39);
                                    Double lab = Double.parseDouble(labResult);

                                    handleOncePerPatientObs(patient,
                                            Context.getConceptService()
                                                    .getConceptByUuid("654AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"),
                                            null, labResult, null, lab, enlabresultNew, null, v);

                                }
                                if (!legacyData.get(8).isEmpty()) {

                                    String labResult = legacyData.get(8);
                                    Double lab = Double.parseDouble(labResult);

                                    handleOncePerPatientObs(patient,
                                            Dictionary.getConcept(Dictionary.HIV_VIRAL_LOAD), null, labResult,
                                            null, lab, enlabresultNew, null, v);

                                }
                                if (!legacyData.get(40).isEmpty()) {

                                    String labResult = legacyData.get(40);
                                    Double lab = Double.parseDouble(labResult);

                                    handleOncePerPatientObs(patient,
                                            Context.getConceptService()
                                                    .getConceptByUuid("790AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"),
                                            null, labResult, null, lab, enlabresultNew, null, v);

                                }
                                EncounterType tbOIEnrollEncType = MetadataUtils.existing(EncounterType.class,
                                        CommonMetadata._EncounterType.CONSULTATION);
                                Encounter tbOIEncounter = new Encounter();

                                tbOIEncounter.setEncounterType(tbOIEnrollEncType);
                                tbOIEncounter.setPatient(patient);

                                tbOIEncounter.setDateCreated(curDate);
                                tbOIEncounter.setEncounterDatetime(dateVisit);
                                tbOIEncounter.setLocation(
                                        Context.getService(KenyaEmrService.class).getDefaultLocation());

                                tbOIEncounter.setForm(
                                        MetadataUtils.existing(Form.class, CommonMetadata._Form.TB_SCREENING));
                                tbOIEncounter.setVisit(v);
                                tbOIEncounter.setVoided(false);
                                Encounter entbOIresultNew = Context.getEncounterService()
                                        .saveEncounter(tbOIEncounter);
                                Obs o = null;
                                if (!legacyData.get(27).isEmpty()) {
                                    String text = "";
                                    Obs OIGroup = new Obs();
                                    OIGroup.setPerson(patient);
                                    OIGroup.setConcept(Dictionary.getConcept(Dictionary.OI_GROUP_TB_FORM));

                                    OIGroup.setObsDatetime(entbOIresultNew.getEncounterDatetime());
                                    // Added value coded as per default obs
                                    // object
                                    // format.
                                    OIGroup.setValueCoded(null);
                                    OIGroup.setValueText(text);
                                    OIGroup.setLocation(
                                            Context.getService(KenyaEmrService.class).getDefaultLocation());

                                    OIGroup.setEncounter(entbOIresultNew);

                                    if (!legacyData.get(27).isEmpty()) {
                                        o = Context.getObsService().saveObs(OIGroup,
                                                "KenyaEMR History Details");
                                    }

                                    if (!legacyData.get(27).isEmpty()) {
                                        String oivalue = legacyData.get(27);
                                        String[] valueList = oivalue.split("\\s*,\\s*");

                                        for (String oiname : valueList) {

                                            Concept oiConcept = Context.getConceptService().getConcept(oiname);

                                            handleOncePerPatientObs(patient,
                                                    Dictionary.getConcept(Dictionary.HIV_CARE_DIAGNOSIS),
                                                    oiConcept, "", null, null, entbOIresultNew, o, v);

                                        }

                                    }

                                }

                                if (!legacyData.get(10).isEmpty()) {

                                    Concept tbStatus = Context.getConceptService()
                                            .getConcept(Integer.parseInt(legacyData.get(10)));

                                    handleOncePerPatientObs(patient,
                                            Dictionary.getConcept(Dictionary.TB_PATIENT), tbStatus, "", null,
                                            null, entbOIresultNew, null, v);

                                }
                                if (!legacyData.get(11).isEmpty()) {

                                    Concept tbDiseaseClassification = Context.getConceptService()
                                            .getConcept(Integer.parseInt(legacyData.get(11)));
                                    handleOncePerPatientObs(patient,
                                            Dictionary.getConcept(Dictionary.SITE_OF_TUBERCULOSIS_DISEASE),
                                            tbDiseaseClassification, "", null, null, entbOIresultNew, null, v);
                                    if (!legacyData.get(12).isEmpty()) {
                                        if (!tbDiseaseClassification.equals("42")) {
                                            Concept tbsiteClassification = Context.getConceptService()
                                                    .getConcept(Integer.parseInt(legacyData.get(12)));
                                            handleOncePerPatientObs(patient,
                                                    Dictionary.getConcept(Dictionary.TB_SITE),
                                                    tbsiteClassification, "", null, null, entbOIresultNew, null,
                                                    v);
                                        }
                                    }
                                }

                                if (!legacyData.get(13).isEmpty()) {

                                    SimpleDateFormat sdf = new SimpleDateFormat("E MMM dd HH:mm:ss Z yyyy");
                                    Date tbStartDate = new Date();
                                    try {
                                        tbStartDate = (Date) formatter.parse(legacyData.get(13));

                                    } catch (ParseException e) {
                                        e.printStackTrace();
                                    }

                                    handleOncePerPatientObs(patient,
                                            Dictionary.getConcept(
                                                    Dictionary.TUBERCULOSIS_DRUG_TREATMENT_START_DATE),
                                            null, null, tbStartDate, null, entbOIresultNew, null, v);
                                }
                                if (!legacyData.get(14).isEmpty()) {

                                    Concept tbTownship = Context.getConceptService()
                                            .getConcept(Integer.parseInt(legacyData.get(14)));
                                    handleOncePerPatientObs(patient, Dictionary.getConcept(Dictionary.TOWNSHIP),
                                            tbTownship, "", null, null, entbOIresultNew, null, v);
                                }
                                if (!legacyData.get(15).isEmpty()) {

                                    String tbclinicName = "";
                                    tbclinicName = legacyData.get(15);

                                    handleOncePerPatientObs(patient,
                                            Dictionary.getConcept(Dictionary.TB_CLINIC_NAME), null,
                                            tbclinicName, null, null, entbOIresultNew, null, v);
                                }
                                if (!legacyData.get(16).isEmpty()) {

                                    String tbregistrationNumber = "";
                                    tbregistrationNumber = legacyData.get(16);

                                    handleOncePerPatientObs(patient,
                                            Dictionary.getConcept(Dictionary.TUBERCULOSIS_TREATMENT_NUMBER),
                                            null, tbregistrationNumber, null, null, entbOIresultNew, null, v);
                                }
                                if (!legacyData.get(17).isEmpty()) {
                                    Concept tbRegimen = Context.getConceptService()
                                            .getConcept(Integer.parseInt(legacyData.get(17)));
                                    handleOncePerPatientObs(patient,
                                            Dictionary.getConcept(Dictionary.TB_FORM_REGIMEN), tbRegimen, "",
                                            null, null, entbOIresultNew, null, v);

                                }
                                if (!legacyData.get(18).isEmpty()) {

                                    Concept tbOutcome = Context.getConceptService()
                                            .getConcept(Integer.parseInt(legacyData.get(18)));

                                    handleOncePerPatientObs(patient,
                                            Dictionary.getConcept(Dictionary.TUBERCULOSIS_TREATMENT_OUTCOME),
                                            tbOutcome, null, null, null, entbOIresultNew, null, v);
                                }

                                if (!legacyData.get(19).isEmpty()) {

                                    Date tbOutcomeDate = null;
                                    Date curDatenew = new Date();
                                    try {
                                        tbOutcomeDate = (Date) formatter.parse(legacyData.get(19));
                                        dateCheck = visitDateInExcel.format(tbOutcomeDate);
                                        tbOutcomeDate = mysqlDateTimeFormatter.parse(dateCheck + " "
                                                + curDatenew.getHours() + ":" + curDatenew.getMinutes() + ":"
                                                + curDatenew.getSeconds());
                                    } catch (ParseException e) {
                                        e.printStackTrace();
                                    }

                                    handleOncePerPatientObs(patient,
                                            Dictionary.getConcept(Dictionary.TB_OUTCOME_DATE), null, null,
                                            tbOutcomeDate, null, entbOIresultNew, null, v);
                                }
                                int flag = 0;

                                if (!legacyData.get(20).isEmpty()) {

                                    EncounterType HivdiscontEnrollEncType = MetadataUtils.existing(
                                            EncounterType.class,
                                            HivMetadata._EncounterType.HIV_DISCONTINUATION);
                                    Encounter hivDiscontEncounter = new Encounter();

                                    hivDiscontEncounter.setEncounterType(HivdiscontEnrollEncType);
                                    hivDiscontEncounter.setPatient(patient);

                                    hivDiscontEncounter.setDateCreated(curDate);
                                    hivDiscontEncounter.setEncounterDatetime(dateVisit);
                                    hivDiscontEncounter.setLocation(
                                            Context.getService(KenyaEmrService.class).getDefaultLocation());

                                    hivDiscontEncounter.setForm(MetadataUtils.existing(Form.class,
                                            HivMetadata._Form.HIV_DISCONTINUATION));
                                    hivDiscontEncounter.setVisit(v);
                                    hivDiscontEncounter.setVoided(false);
                                    Encounter enhivDiscontresultNew = Context.getEncounterService()
                                            .saveEncounter(hivDiscontEncounter);

                                    Concept endOfFollowup = Context.getConceptService()
                                            .getConcept(Integer.parseInt(legacyData.get(20)));
                                    if (legacyData.get(20).equals("160034")) {
                                        handleOncePerPatientObs(patient,
                                                Dictionary.getConcept(
                                                        Dictionary.REASON_FOR_PROGRAM_DISCONTINUATION),
                                                endOfFollowup, null, null, null, enhivDiscontresultNew, null,
                                                v);
                                        handleOncePerPatientObs(patient,
                                                Dictionary.getConcept(Dictionary.DEATH_DATE), null, null,
                                                dateVisit, null, enhivDiscontresultNew, null, v);
                                        flag = 1;

                                    } else if (legacyData.get(20).equals("159492")) {
                                        handleOncePerPatientObs(patient,
                                                Dictionary.getConcept(
                                                        Dictionary.REASON_FOR_PROGRAM_DISCONTINUATION),
                                                endOfFollowup, null, null, null, enhivDiscontresultNew, null,
                                                v);
                                        if (!legacyData.get(22).isEmpty()) {
                                            String transferdto = legacyData.get(22);

                                            handleOncePerPatientObs(patient,
                                                    Dictionary.getConcept(Dictionary.TRANSFERRED_OUT_TO), null,
                                                    transferdto, null, null, enhivDiscontresultNew, null, v);

                                        }
                                        handleOncePerPatientObs(patient,
                                                Dictionary.getConcept(Dictionary.DATE_TRANSFERRED_OUT), null,
                                                null, dateVisit, null, enhivDiscontresultNew, null, v);

                                    } else {
                                        handleOncePerPatientObs(patient,
                                                Dictionary.getConcept(
                                                        Dictionary.REASON_FOR_PROGRAM_DISCONTINUATION),
                                                endOfFollowup, null, null, null, enhivDiscontresultNew, null,
                                                v);

                                    }

                                    if (!legacyData.get(21).isEmpty()) {
                                        Date programcmpleteDate = null;
                                        Date curDatenew = new Date();
                                        try {
                                            programcmpleteDate = (Date) formatter.parse(legacyData.get(21));
                                            dateCheck = visitDateInExcel.format(programcmpleteDate);
                                            programcmpleteDate = mysqlDateTimeFormatter.parse(dateCheck + " "
                                                    + curDatenew.getHours() + ":" + curDatenew.getMinutes()
                                                    + ":" + curDatenew.getSeconds());
                                            Collection<PatientProgram> hivprogram = Context
                                                    .getProgramWorkflowService().getPatientPrograms(patient);
                                            for (PatientProgram prog : hivprogram) {
                                                if (prog.getPatient().equals(patient)) {
                                                    if (prog.getProgram().getUuid()
                                                            .equals("dfdc6d40-2f2f-463d-ba90-cc97350441a8")
                                                            && prog.getDateCompleted() == null) {
                                                        prog.setDateCompleted(programcmpleteDate);
                                                        Context.getProgramWorkflowService()
                                                                .savePatientProgram(prog);
                                                    }

                                                }
                                            }
                                        } catch (ParseException e) {
                                            e.printStackTrace();
                                        }

                                    }

                                }

                                if (!legacyData.get(23).isEmpty() && !legacyData.get(24).isEmpty()) {
                                    PatientProgram activeArtProgram = null;
                                    Collection<PatientProgram> artProgram = Context.getProgramWorkflowService()
                                            .getPatientPrograms(patient);
                                    for (PatientProgram artProg : artProgram) {
                                        if (artProg.getProgram().getUuid()
                                                .equals("96ec813f-aaf0-45b2-add6-e661d5bf79d6")
                                                && artProg.getDateCompleted() == null) {
                                            activeArtProgram = artProg;
                                        }
                                    }

                                    EncounterType ArtdiscontEnrollEncType = MetadataUtils
                                            .existing(EncounterType.class, ArtMetadata._EncounterType.STOP_ART);
                                    Encounter artDiscontEncounter = new Encounter();

                                    artDiscontEncounter.setEncounterType(ArtdiscontEnrollEncType);
                                    artDiscontEncounter.setPatient(patient);

                                    artDiscontEncounter.setDateCreated(curDate);
                                    artDiscontEncounter.setEncounterDatetime(dateVisit);
                                    artDiscontEncounter.setLocation(
                                            Context.getService(KenyaEmrService.class).getDefaultLocation());

                                    artDiscontEncounter.setForm(
                                            MetadataUtils.existing(Form.class, ArtMetadata._Form.STOP_ART));
                                    artDiscontEncounter.setVisit(v);
                                    artDiscontEncounter.setVoided(false);
                                    Encounter enartDiscontresultNew = Context.getEncounterService()
                                            .saveEncounter(artDiscontEncounter);
                                    Date programcmpleteDate = null;
                                    Date curDatenew = new Date();
                                    try {
                                        programcmpleteDate = (Date) formatter.parse(legacyData.get(23));
                                        dateCheck = visitDateInExcel.format(programcmpleteDate);
                                        programcmpleteDate = mysqlDateTimeFormatter.parse(dateCheck + " "
                                                + curDatenew.getHours() + ":" + curDatenew.getMinutes() + ":"
                                                + curDatenew.getSeconds());
                                        if (activeArtProgram != null) {
                                            activeArtProgram.setDateCompleted(programcmpleteDate);
                                        }
                                    } catch (ParseException e) {
                                        e.printStackTrace();
                                    }

                                    Context.getProgramWorkflowService().savePatientProgram(activeArtProgram);

                                    if (!legacyData.get(24).isEmpty()) {
                                        Concept endOfArt = Context.getConceptService()
                                                .getConcept(Integer.parseInt(legacyData.get(24)));

                                        handleOncePerPatientObs(patient,
                                                Context.getConceptService().getConceptByUuid(
                                                        "1252AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"),
                                                endOfArt, null, null, null, enartDiscontresultNew, null, v);

                                    }
                                }

                                EncounterType consultEnrollEncType = MetadataUtils.existing(EncounterType.class,
                                        CommonMetadata._EncounterType.CONSULTATION);
                                Encounter consultEncounter = new Encounter();

                                consultEncounter.setEncounterType(consultEnrollEncType);
                                consultEncounter.setPatient(patient);

                                consultEncounter.setDateCreated(curDate);
                                consultEncounter.setEncounterDatetime(dateVisit);
                                consultEncounter.setLocation(
                                        Context.getService(KenyaEmrService.class).getDefaultLocation());

                                consultEncounter.setForm(MetadataUtils.existing(Form.class,
                                        CommonMetadata._Form.CONSULTATION_ENCOUNTER));
                                consultEncounter.setVisit(v);
                                consultEncounter.setVoided(false);
                                Encounter enconsultresultNew = Context.getEncounterService()
                                        .saveEncounter(consultEncounter);
                                if (!legacyData.get(30).isEmpty()) {

                                    Concept sideffectsOfArt = Context.getConceptService()
                                            .getConcept(Integer.parseInt(legacyData.get(30)));

                                    handleOncePerPatientObs(patient,
                                            Context.getConceptService()
                                                    .getConceptByUuid("159935AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"),
                                            Dictionary.getConcept(Dictionary.YES), null, null, null,
                                            enconsultresultNew, null, v);
                                    handleOncePerPatientObs(patient,
                                            Dictionary.getConcept(Dictionary.ART_SIDE_EFFECTS_VALUES),
                                            sideffectsOfArt, null, null, null, enconsultresultNew, null, v);

                                }
                                if (!legacyData.get(31).isEmpty()) {

                                    String levelOfAdherence = legacyData.get(31);

                                    handleOncePerPatientObs(patient,
                                            Dictionary.getConcept(Dictionary.ART_ADHERENCE), null,
                                            levelOfAdherence, null, null, enconsultresultNew, null, v);

                                }
                                if (!legacyData.get(41).isEmpty()) {

                                    Concept temporaryreferal = Context.getConceptService()
                                            .getConcept(Integer.parseInt(legacyData.get(41)));

                                    handleOncePerPatientObs(patient,
                                            Context.getConceptService()
                                                    .getConceptByUuid("5e05d243-e039-4f04-9988-18d5a499329e"),
                                            Dictionary.getConcept(Dictionary.YES), null, null, null,
                                            enconsultresultNew, null, v);
                                    handleOncePerPatientObs(patient,
                                            Context.getConceptService()
                                                    .getConceptByUuid("c648f69b-7065-4255-9af2-6076348c87dc"),
                                            temporaryreferal, null, null, null, enconsultresultNew, null, v);

                                }
                                if (!legacyData.get(28).isEmpty()) {

                                    Concept tbOutcome = new Concept();
                                    String performance = legacyData.get(28);
                                    if (performance.equals("A")) {
                                        tbOutcome = Dictionary.getConcept(Dictionary.PERFSCALE_A);
                                    } else if (performance.equals("B")) {
                                        tbOutcome = Dictionary.getConcept(Dictionary.PERFSCALE_B);
                                    } else {
                                        tbOutcome = Dictionary.getConcept(Dictionary.PERFSCALE_C);
                                    }
                                    handleOncePerPatientObs(patient,
                                            Dictionary.getConcept(Dictionary.PERFORMANCE), tbOutcome, null,
                                            null, null, entbOIresultNew, null, v);
                                }

                                if (!legacyData.get(29).isEmpty()) {

                                    Concept tbOutcome = new Concept();
                                    String stage = legacyData.get(29);
                                    if (stage.equals("IV")) {
                                        tbOutcome = Dictionary.getConcept(Dictionary.WHO_STAGE_4_ADULT);
                                    } else if (stage.equals("III")) {
                                        tbOutcome = Dictionary.getConcept(Dictionary.WHO_STAGE_3_ADULT);
                                    } else if (stage.equals("II")) {
                                        tbOutcome = Dictionary.getConcept(Dictionary.WHO_STAGE_2_ADULT);
                                    } else {
                                        tbOutcome = Dictionary.getConcept(Dictionary.WHO_STAGE_1_ADULT);
                                    }
                                    handleOncePerPatientObs(patient,
                                            Dictionary.getConcept(Dictionary.CURRENT_WHO_STAGE), tbOutcome,
                                            null, null, null, entbOIresultNew, null, v);

                                }
                                EncounterType nextAppointEncType = MetadataUtils.existing(EncounterType.class,
                                        CommonMetadata._EncounterType.CONSULTATION);
                                Encounter nextAppointEncounter = new Encounter();

                                nextAppointEncounter.setEncounterType(nextAppointEncType);
                                nextAppointEncounter.setPatient(patient);

                                nextAppointEncounter.setDateCreated(curDate);
                                nextAppointEncounter.setEncounterDatetime(dateVisit);
                                nextAppointEncounter.setLocation(
                                        Context.getService(KenyaEmrService.class).getDefaultLocation());
                                nextAppointEncounter.setVisit(v);
                                nextAppointEncounter.setVoided(false);
                                Encounter ennextAppointresultNew = new Encounter();
                                if (!legacyData.get(32).isEmpty()) {
                                    ennextAppointresultNew = Context.getEncounterService()
                                            .saveEncounter(nextAppointEncounter);
                                }
                                if (!legacyData.get(32).isEmpty()) {
                                    SimpleDateFormat sdf = new SimpleDateFormat("E MMM dd HH:mm:ss Z yyyy");
                                    Date nextAppointDate = new Date();
                                    try {
                                        nextAppointDate = (Date) formatter.parse(legacyData.get(32));

                                    } catch (ParseException e) {
                                        e.printStackTrace();
                                    }

                                    handleOncePerPatientObs(patient,
                                            Dictionary.getConcept(Dictionary.RETURN_VISIT_DATE), null, null,
                                            nextAppointDate, null, ennextAppointresultNew, null, v);
                                }

                                // For OI or PROPHYLAXIS
                                if (!legacyData.get(33).isEmpty() || !legacyData.get(34).isEmpty()) {

                                    // For Duration of Medication
                                    if (!legacyData.get(6).isEmpty()) {

                                        EncounterType otherMedicationEnrollEncType = MetadataUtils.existing(
                                                EncounterType.class,
                                                CommonMetadata._EncounterType.CONSULTATION);
                                        Encounter otherMedEncounter = new Encounter();

                                        otherMedEncounter.setEncounterType(otherMedicationEnrollEncType);
                                        otherMedEncounter.setPatient(patient);

                                        otherMedEncounter.setDateCreated(curDate);
                                        otherMedEncounter.setEncounterDatetime(dateVisit);
                                        otherMedEncounter.setLocation(
                                                Context.getService(KenyaEmrService.class).getDefaultLocation());

                                        otherMedEncounter.setForm(MetadataUtils.existing(Form.class,
                                                CommonMetadata._Form.OTHER_MEDICATIONS));
                                        otherMedEncounter.setVisit(v);
                                        otherMedEncounter.setVoided(false);
                                        Encounter enotherresultNew = Context.getEncounterService()
                                                .saveEncounter(otherMedEncounter);

                                        String duration = legacyData.get(6);
                                        Double durationDouble = Double.parseDouble(duration);
                                        int durationInteger = Integer.parseInt(legacyData.get(6));

                                        /*
                                         * PROPHYLAXIS start
                                         */

                                        if (!legacyData.get(33).isEmpty()) {

                                            String value = legacyData.get(33);

                                            String[] valueList = value.split("\\s*,\\s*");

                                            for (String prop : valueList) {
                                                // Group for each Drug
                                                String text = "";
                                                Obs prophylGroup = new Obs();
                                                prophylGroup.setPerson(patient);
                                                prophylGroup.setConcept(
                                                        Context.getConceptService().getConceptByUuid(
                                                                "163022AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"));
                                                prophylGroup.setObsDatetime(
                                                        enotherresultNew.getEncounterDatetime());
                                                prophylGroup.setValueCoded(null);
                                                prophylGroup.setValueText(text);
                                                prophylGroup
                                                        .setLocation(Context.getService(KenyaEmrService.class)
                                                                .getDefaultLocation());

                                                prophylGroup.setEncounter(enotherresultNew);
                                                prophylGroup.setComment("1");
                                                Obs prophyl = Context.getObsService().saveObs(prophylGroup,
                                                        "KenyaEMR History Details");

                                                Concept oivalue = Context.getConceptService().getConcept(prop);

                                                // CPT for CTX
                                                if (oivalue.getUuid().toString()
                                                        .equals("105281AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA")) {
                                                    handleOncePerPatientObs(patient,
                                                            Dictionary.getConcept(Dictionary.CPT_VALUE),
                                                            Context.getConceptService().getConcept(1065), "",
                                                            null, null, enotherresultNew, null, v);
                                                }

                                                // IPT for Isoniazid
                                                if (oivalue.getUuid().toString()
                                                        .equals("78280AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA")) {
                                                    handleOncePerPatientObs(patient,
                                                            Dictionary.getConcept(Dictionary.IPT_VALUE),
                                                            Context.getConceptService().getConcept(1065), "",
                                                            null, null, enotherresultNew, null, v);
                                                }

                                                handleOncePerPatientObs(patient,
                                                        Dictionary.getConcept(Dictionary.PROPHYLAXIS), oivalue,
                                                        "", null, null, enotherresultNew, prophyl, v);

                                                handleOncePerPatientObs(patient,
                                                        Dictionary.getConcept(Dictionary.MEDICATION_DURATION),
                                                        null, "", null, durationDouble, enotherresultNew,
                                                        prophyl, v);

                                                // Capture Drug in Drug obs
                                                // processed
                                                DrugObsProcessed dop = new DrugObsProcessed();
                                                dop.setObs(prophyl);
                                                dop.setCreatedDate(curDate);
                                                dop.setPatient(patient);
                                                dop.setProcessedDate(dateVisit);
                                                dop.setQuantityPostProcess(durationInteger);

                                                KenyaEmrService kes = (KenyaEmrService) Context
                                                        .getService(KenyaEmrService.class);
                                                kes.saveDrugObsProcessed(dop);
                                            }

                                        }

                                        /*
                                         * PROPHYLAXIS End
                                         */

                                        if (!legacyData.get(34).isEmpty()) {

                                            String value = legacyData.get(34);

                                            String[] valueList = value.split("\\s*,\\s*");

                                            for (String oil : valueList) {
                                                // Group for each Drug
                                                String text = "";
                                                Obs oitreatmentGroup = new Obs();
                                                oitreatmentGroup.setPerson(patient);
                                                oitreatmentGroup.setConcept(
                                                        Context.getConceptService().getConceptByUuid(
                                                                "163021AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"));

                                                oitreatmentGroup.setObsDatetime(
                                                        enotherresultNew.getEncounterDatetime());

                                                oitreatmentGroup.setValueCoded(null);
                                                oitreatmentGroup.setValueText(text);
                                                oitreatmentGroup
                                                        .setLocation(Context.getService(KenyaEmrService.class)
                                                                .getDefaultLocation());

                                                oitreatmentGroup.setEncounter(enotherresultNew);
                                                oitreatmentGroup.setComment("1");
                                                Obs oitreat = Context.getObsService().saveObs(oitreatmentGroup,
                                                        "KenyaEMR History Details");

                                                Concept oivalue = Context.getConceptService().getConcept(oil);

                                                handleOncePerPatientObs(patient,
                                                        Dictionary.getConcept(Dictionary.OI_TREATMENT_DRUG),
                                                        oivalue, "", null, null, enotherresultNew, oitreat, v);

                                                handleOncePerPatientObs(patient,
                                                        Dictionary.getConcept(Dictionary.MEDICATION_DURATION),
                                                        null, "", null, durationDouble, enotherresultNew,
                                                        oitreat, v);

                                                // Capture Drug in Drug obs
                                                // processed
                                                DrugObsProcessed dop = new DrugObsProcessed();
                                                dop.setObs(oitreat);
                                                dop.setCreatedDate(curDate);
                                                dop.setPatient(patient);
                                                dop.setProcessedDate(dateVisit);
                                                dop.setQuantityPostProcess(durationInteger);

                                                KenyaEmrService kes = (KenyaEmrService) Context
                                                        .getService(KenyaEmrService.class);
                                                kes.saveDrugObsProcessed(dop);
                                            }
                                        }
                                    }
                                }

                                EncounterType recordEncType = MetadataUtils.existing(EncounterType.class,
                                        CommonMetadata._EncounterType.CONSULTATION);
                                Encounter recordEncounter = new Encounter();

                                recordEncounter.setEncounterType(recordEncType);
                                recordEncounter.setPatient(patient);

                                recordEncounter.setDateCreated(curDate);
                                recordEncounter.setEncounterDatetime(dateVisit);
                                recordEncounter.setLocation(
                                        Context.getService(KenyaEmrService.class).getDefaultLocation());

                                recordEncounter.setForm(
                                        MetadataUtils.existing(Form.class, CommonMetadata._Form.TRIAGE));
                                recordEncounter.setVisit(v);
                                recordEncounter.setVoided(false);
                                Encounter enrecordvitalresultNew = Context.getEncounterService()
                                        .saveEncounter(recordEncounter);
                                if (!legacyData.get(25).isEmpty()) {

                                    String labResult = legacyData.get(25);
                                    Double lab = Double.parseDouble(labResult);

                                    handleOncePerPatientObs(patient,
                                            Dictionary.getConcept(Dictionary.WEIGHT_KG), null, null, null, lab,
                                            enrecordvitalresultNew, null, v);

                                }

                                if (!legacyData.get(26).isEmpty()) {

                                    String labResult = legacyData.get(26);
                                    Double lab = Double.parseDouble(labResult);

                                    handleOncePerPatientObs(patient,
                                            Dictionary.getConcept(Dictionary.HEIGHT_CM), null, null, null, lab,
                                            enrecordvitalresultNew, null, v);

                                }

                                EncounterType hivEnrollEncType = MetadataUtils.existing(EncounterType.class,
                                        HivMetadata._EncounterType.HIV_ENROLLMENT);
                                EncounterType registrationEncType = MetadataUtils.existing(EncounterType.class,
                                        CommonMetadata._EncounterType.REGISTRATION);
                                Encounter obstericEncounter = new Encounter();

                                obstericEncounter.setEncounterType(registrationEncType);
                                obstericEncounter.setPatient(patient);

                                obstericEncounter.setDateCreated(curDate);
                                obstericEncounter.setEncounterDatetime(dateVisit);
                                obstericEncounter.setLocation(
                                        Context.getService(KenyaEmrService.class).getDefaultLocation());

                                obstericEncounter.setForm(
                                        MetadataUtils.existing(Form.class, Metadata.Form.OBSTETRIC_HISTORY));
                                obstericEncounter.setVisit(v);
                                obstericEncounter.setVoided(false);
                                Encounter enobstericrecordresultNew = Context.getEncounterService()
                                        .saveEncounter(obstericEncounter);
                                if (!legacyData.get(42).isEmpty()) {

                                    Concept pregstatus = Context.getConceptService()
                                            .getConcept(Integer.parseInt(legacyData.get(42)));
                                    handleOncePerPatientObs(patient,
                                            Dictionary.getConcept(Dictionary.PREGNANCY_STATUS), pregstatus, "",
                                            null, null, enobstericrecordresultNew, null, v);

                                }
                                if (!legacyData.get(43).isEmpty()) {

                                    Concept familyplanningstatus = Dictionary.getConcept(Dictionary.YES);

                                    handleOncePerPatientObs(patient,
                                            Context.getConceptService()
                                                    .getConceptByUuid("5271AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"),
                                            familyplanningstatus, "", null, null, enobstericrecordresultNew,
                                            null, v);

                                }
                                if (!legacyData.get(43).isEmpty()) {

                                    Concept familyplanningvalue = Context.getConceptService()
                                            .getConcept(Integer.parseInt(legacyData.get(43)));

                                    handleOncePerPatientObs(patient,
                                            Dictionary.getConcept(Dictionary.METHOD_OF_FAMILY_PLANNING),
                                            familyplanningvalue, "", null, null, enobstericrecordresultNew,
                                            null, v);

                                }

                                DateFormat visitDatesInExcel = new SimpleDateFormat("dd-MMM-yyyy");
                                String dateChecks = visitDatesInExcel.format(dateVisit);
                                if (legacyData.get(3) != null) {
                                    Date Datenew = new Date();
                                    try {
                                        dateVisit = mysqlDateTimeFormatter
                                                .parse(dateChecks + " " + Datenew.getHours() + ":"
                                                        + Datenew.getMinutes() + ":" + Datenew.getSeconds());

                                    } catch (ParseException e) {
                                        dateVisit = Datenew;

                                        e.printStackTrace();
                                    }
                                }

                                v.setStopDatetime(dateVisit);

                                Context.getVisitService().saveVisit(v);

                                if (flag == 1) {
                                    person.setDead(true);
                                    person.setDeathDate(dateVisit);
                                    person.setCauseOfDeath(Dictionary.getConcept(Dictionary.UNKNOWN));
                                    Context.getPersonService().savePerson(person);
                                }
                            }

                        }

                        catch (IndexOutOfBoundsException e) {
                            e.printStackTrace();
                        }
                    } else {
                        break;
                    }
                }
            } catch (IndexOutOfBoundsException e) {
                break;
            }

            rowCountVisit++;
        }
    }

    inputStream.close();
    // workbook.close();
    return new SuccessResult("Saved Patient Data");
}

From source file:org.openmrs.module.reporting.common.ExcelUtilTest.java

License:Open Source License

protected Cell getCellToTheRightOf(Sheet sheet, Object contents) {
    for (Iterator<Row> ri = sheet.rowIterator(); ri.hasNext();) {
        Row row = ri.next();
        for (Iterator<Cell> ci = row.cellIterator(); ci.hasNext();) {
            Cell cell = ci.next();/* w  w w  .ja v  a2 s . c o m*/
            if (contents.equals(ExcelUtil.getCellContents(cell))) {
                return ci.next();
            }
        }
    }
    return null;
}

From source file:org.openmrs.module.reporting.report.renderer.ExcelTemplateRendererTest.java

License:Mozilla Public License

public void testLocalization(String prefix, String locale, String emrIdVal, String genderVal, String dobVal)
        throws Exception {

    ReportDefinition rd = new ReportDefinition();
    SqlDataSetDefinition testDataSet = new SqlDataSetDefinition();
    testDataSet.setSqlQuery(/*from   w  w w  .java  2  s.c  om*/
            "select p.patient_id as PID, n.gender as GENDER, n.birthdate as DOB from patient p, person n where p.patient_id = n.person_id and n.gender = 'M'");
    rd.addDataSetDefinition("dataset", testDataSet, null);

    // Next, we set up the ReportDesign and ReportDesignResource files for the renderer

    final ReportDesign design = new ReportDesign();
    design.setName("TestDesign");
    design.setReportDefinition(rd);
    design.setRendererType(ExcelTemplateRenderer.class);

    ReportDesignResource resource = new ReportDesignResource();
    resource.setName("template.xls");
    InputStream is = OpenmrsClassLoader.getInstance().getResourceAsStream(
            "org/openmrs/module/reporting/report/renderer/ExcelTemplateLocalizeLabelsTest.xls");
    resource.setContents(IOUtils.toByteArray(is));
    IOUtils.closeQuietly(is);
    design.addResource(resource);

    Properties props = new Properties();
    props.put("columnTranslationPrefix", prefix);
    props.put("columnTranslationLocale", locale);
    design.setProperties(props);

    // For now, we need this little magic to simulate what would happen if this were all stored in the database via the UI

    ExcelTemplateRenderer renderer = new ExcelTemplateRenderer() {
        public ReportDesign getDesign(String argument) {
            return design;
        }
    };

    // We construct an EvaluationContext (in this case the parameters aren't used, but included here for reference)

    EvaluationContext context = new EvaluationContext();
    ReportData data = Context.getService(ReportDefinitionService.class).evaluate(rd, context);

    MutableMessageSource messageSource = Context.getMessageSourceService().getActiveMessageSource();
    messageSource.addPresentation(new PresentationMessage("reporting.test.PID", Locale.ENGLISH, "EMR ID", ""));
    messageSource.addPresentation(
            new PresentationMessage("reporting.test.dataset.DOB", Locale.ENGLISH, "Date of Birth", ""));
    messageSource
            .addPresentation(new PresentationMessage("reporting.test.PID", Locale.FRENCH, "ID DE EMR", ""));
    messageSource.addPresentation(new PresentationMessage("reporting.test.GENDER", Locale.FRENCH, "Sexe", ""));
    messageSource.addPresentation(
            new PresentationMessage("reporting.test.dataset.DOB", Locale.FRENCH, "Date de naissance", ""));

    ByteArrayOutputStream reportBaos = new ByteArrayOutputStream(1024);
    renderer.render(data, "xxx:xls", reportBaos);
    IOUtils.closeQuietly(reportBaos);

    Workbook wb = ExcelUtil.loadWorkbookFromInputStream(new ByteArrayInputStream(reportBaos.toByteArray()));
    Sheet sheet = wb.getSheet("TestLabels");

    List<String> cellsFound = new ArrayList<String>();

    for (Iterator<Row> ri = sheet.rowIterator(); ri.hasNext();) {
        Row row = ri.next();
        for (Iterator<Cell> ci = row.cellIterator(); ci.hasNext();) {
            Cell cell = ci.next();
            Object contents = ExcelUtil.getCellContents(cell);
            if (!ObjectUtil.isNull(contents)) {
                cellsFound.add(contents.toString());
            }
        }
    }

    Assert.assertEquals(3, cellsFound.size());
    Assert.assertEquals(emrIdVal, cellsFound.get(0));
    Assert.assertEquals(genderVal, cellsFound.get(1));
    Assert.assertEquals(dobVal, cellsFound.get(2));
}