public void parseLodgingExpenses(Form f) throws ParseException
    {
        List<LodgingExpense> expenses = new ArrayList<LodgingExpense>();
        Map<String, String> inputData = f.inputData;
        if(inputData.containsKey("NUM_DAYS"))
        {
            int lodgingClaims = Integer.parseInt(inputData.get("NUM_DAYS"));
            for(int i = 1; i <= lodgingClaims; ++i)
            {
                LodgingExpense expense = new LodgingExpense();
                expense.day = i;
                expense.date = addToDate(f.departureDate, "yyyyMMdd HHmmss", i);

                if(inputData.containsKey(itemizeString("DAY_LODGING_CITY", i)))
                {
                    expense.city = inputData.get(itemizeString("DAY_LODGING_CITY", i));
                }
                else {
                    //TODO: how do we know if just city element is missing
                    //if no city fields, stop parsing for this day
                    continue;
                }
                if(inputData.containsKey(itemizeString("DAY_LODGING_COUNTRY", i)))
                {
                    expense.country = inputData.get(itemizeString("DAY_LODGING_COUNTRY", i)).toLowerCase();

                    //need state field if in usa
                    if(checkAmerica(expense.country))
                    {
                        if(inputData.containsKey(itemizeString("DAY_LODGING_STATE", i)))
                        {
                            expense.state = inputData.get(itemizeString("DAY_LODGING_STATE", i)).toLowerCase();
                        }
                        else
                        {
                            throw new ParseException("Missing required field :"+ itemizeString("DAY_LODGING_STATE", i));
                        }
                    }
                }
                else
                {
                    throw new ParseException("Missing required field : DAY_LODGING_COUNTRY");
                }
                if(inputData.containsKey(itemizeString("DAY_LODGING_AMOUNT", i)))
                {
                    expense.amount = Float.parseFloat(inputData.get(itemizeString("DAY_LODGING_AMOUNT", i)));
                }
                else
                {
                    throw new ParseException("Missing required field :"+ itemizeString("DAY_LODGING_AMOUNT", i));
                }
                if(inputData.containsKey(itemizeString("DAY_LODGING_CURRENCY", i)))
                {
                    expense.currency = parseCurrency(inputData.get(itemizeString("DAY_LODGING_CURRENCY", i)));
                }
                else
                {
                    throw new ParseException("Missing required field :"+ itemizeString("DAY_LODGING_CURRENCY", i));
                }
                expenses.add(expense);
                parseDestination(f, expense);
            }
        }
        else
        {
            throw new ParseException("Missing required field : NUM_DAYS");
        }

        f.lodgingExpenses = expenses;
    }