Android Open Source - clinicalguide Form Generator






From Project

Back to project page clinicalguide.

License

The source code is released under:

Apache License

If you think the Android project clinicalguide listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package org.get.oxicam.clinicalguide.xml;
/* w w w  .  jav  a  2  s  .com*/
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashSet;

import org.get.oxicam.clinicalguide.ClinicalGuideActivity;
import org.get.oxicam.clinicalguide.db.Database;
import org.get.oxicam.clinicalguide.xml.forms.Form;
import org.get.oxicam.clinicalguide.xml.forms.FormCell;
import org.get.oxicam.clinicalguide.xml.forms.FormColumn;
import org.get.oxicam.clinicalguide.xml.query.QueryHelper;
import org.get.oxicam.clinicalguide.xml.query.QueryResultCell;
import org.get.oxicam.clinicalguide.xml.query.QueryResultRow;
import org.get.oxicam.clinicalguide.xml.query.QueryResultTable;
import org.get.oxicam.clinicalguide.xml.stats.AbstractStatsQuestion;
import org.get.oxicam.clinicalguide.xml.stats.Stats;
import org.get.oxicam.clinicalguide.xml.stats.StatsAnswerHolder;
import org.get.oxicam.clinicalguide.xml.stats.StatsConstraint;

import android.content.Context;
import android.util.Log;
import android.widget.Toast;

public class FormGenerator {

    private Context mActivity;
    private Form form;
    private Database db;
    private long formStartDate;
    private long formEndDate;
    private ArrayList<Object> columnInfo;
    private final static String END_COLUMN = "columnEnd";

    public FormGenerator(Context context, Form form) {
  this.mActivity = context;
  this.form = form;
  db = new Database(mActivity);
  formStartDate = form.getStartDate();
  formEndDate = form.getEndDate();
  columnInfo = new ArrayList<Object>();
  if (mActivity instanceof ClinicalGuideActivity) {
      form.constraints.add(new StatsConstraint("user_table", "id", ((ClinicalGuideActivity) mActivity).getUser().id + "", null));
  }
    }

    /**
     * Gets the result of the form.
     * 
     * @return A String representation of the result of the form.
     */
    public String getFormResult() {
  String retVal = "";
  SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
  String userName = "";

  if (mActivity instanceof ClinicalGuideActivity) {
      userName = "Name of nurse: " + ((ClinicalGuideActivity) mActivity).getUser().username  + "\n";
  }
  String cells = getCellString();
  String columns = getColumnString();
  String stats = getStatsString(form.stats, null);
  String startDate = "Report start date: "
    + fmt.format(new Date(formStartDate)) + "\n";
  String endDate = "Report end date: "
    + fmt.format(new Date(formEndDate)) + "\n";
  retVal += "====" + form.name + "====\n";
  retVal += userName;
  retVal += startDate;
  retVal += endDate;
  retVal += "\nCELLS\n============\n";
  retVal += cells;
  retVal += "\nCOLUMNS\n============\n";
  retVal += columns;
  retVal += "\nSTATS\n============\n";
  retVal += stats;
  Log.v("FORM RESULTS", "====" + form.name + "====\n");
  Log.v("FORM RESULTS", startDate);
  Log.v("FORM RESULTS", endDate);
  Log.v("FORM RESULTS", userName);
  Log.v("FORM RESULTS", "\nCELLS\n============\n");
  Log.v("FORM RESULTS", cells);
  Log.v("FORM RESULTS", "\nCOLUMNS\n============\n");
  Log.v("FORM RESULTS", columns);
  Log.v("FORM RESULTS", "\nSTATS\n============\n");
  Log.v("FORM RESULTS", stats);
  return retVal;
    }
    
    /**
     * returns the result in a html formated string.
     * getFormResult() should be called before this, otherwise it might not get all information
     * @return a html string
     */
    public String getHTMLResult() {
  // run getFormResult() to populate the form
  //getFormResult();

  String userName = "";
  if (mActivity instanceof ClinicalGuideActivity) {
      userName = ((ClinicalGuideActivity) mActivity).getUser().username;
  }
  SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
  StringBuilder retVal = new StringBuilder();
  retVal.append("<div title=\"formTitle\">").append(form.name)
    .append("</div>\n");
  // start date
  retVal.append("<div title=\"startDate\">")
    .append(fmt.format(new Date(formStartDate))).append("</div>\n");
  // end date
  retVal.append("<div title=\"endDate\">")
    .append(fmt.format(new Date(formEndDate))).append("</div>\n");
  // user name
  retVal.append("<div title=\"userName\">").append(userName)
    .append("</div>\n");
  // cells
  retVal.append(getHTMLCellString());
  // columns
  retVal.append(getHTMLColumnString());
  // stats
  retVal.append("<div title=\"stats\">\n");
  for (Stats fs : form.stats) {
      retVal.append(getHTMLStatsString(fs));
  }
  retVal.append("</div>");
  return retVal.toString();
    }


    private String getHTMLCellString() {
  ArrayList<FormCell> cells = form.cells;
  int cellLength = cells.size();
  StringBuilder str = new StringBuilder();
  str.append("<div title=\"cells\">\n");
  for (int i = 0; i < cellLength; i++) {
      str.append("<div title=\"").append(cells.get(i).name).append("\">")
        .append(getCellValue(cells.get(i), cells.get(i).type))
        .append("</div>\n");
  }
  str.append("</div>\n");
  return str.toString();
    }

    private String getHTMLColumnString() {
  StringBuilder sb = new StringBuilder();
  HashSet<String> tbHeader = new HashSet<String>();
  LinkedHashSet<String> usedHeader = new LinkedHashSet<String>();
  ArrayList<String> values = new ArrayList<String>();
  ArrayList<StatsAnswerHolder> sah = new ArrayList<StatsAnswerHolder>();
  for (Object o : columnInfo) {
      if (o instanceof String) {
    if (o.equals(END_COLUMN)) {
        values.add(END_COLUMN);
    } else {
        String[] pieces = ((String) o).split(":");
        if (pieces.length > 1) {
      usedHeader.add(pieces[0]);
      values.add(pieces[1]);
        }
    }
      } else {
    StringBuilder statsString = new StringBuilder();
    for (Stats fs : form.column.stats) {
        usedHeader.add(fs.name);
        for (AbstractStatsQuestion fsq : fs.questions) {
      sah = fsq.getResultFromFormAsValue(form,
        (ArrayList<StatsConstraint>) o);
      statsString = new StringBuilder();
      for (StatsAnswerHolder ssah : sah) {
          tbHeader = new HashSet<String>();
          statsString.append("<table border=\"1\">\n");
          SimpleDateFormat fmt = new SimpleDateFormat(
            "yyyy-MM-dd");
          String startTime = "";
          String endTime = "";
          if (ssah.end != null && ssah.start != null) {
        Calendar c1 = Calendar.getInstance();
        Calendar c2 = Calendar.getInstance();
        c1.setTimeInMillis(ssah.start);
        c2.setTimeInMillis(ssah.end);
        startTime = fmt.format(new Date(ssah.start));
        if (c1.get(Calendar.DAY_OF_YEAR) != c2
          .get(Calendar.DAY_OF_YEAR)) {
            endTime = fmt.format(new Date(ssah.end));
        }
          }
          if (!startTime.equals("") || !endTime.equals("")) {
        statsString.append("<tr>\n");
        if (!startTime.equals("")) {
            statsString
              .append("<td title=\"startTime\">");
            statsString.append(startTime).append(
              "</td>\n");
        }
        if (!endTime.equals("")) {
            statsString
              .append("<td title=\"endTime\">");
            statsString.append(endTime).append(
              "</td>\n");
        }
        statsString.append("</tr>\n");
          }
          StringBuilder tds = new StringBuilder();
          for (QueryResultRow qrr : ssah.table.rows) {
        // tds = new StringBuilder();
        if (tbHeader.size() == 0) {
            statsString.append("<tr>\n");
        }
        tds.append("<tr>\n");
        for (QueryResultCell qrc : qrr.cells) {
            if (tbHeader.add(qrc.getColumnname())) {
          statsString.append("<th>");
          statsString.append(qrc.getColumnname());
          statsString.append("</th>\n");
            }
            tds.append("<td>");
            tds.append(qrc.getData());
            tds.append("</td>\n");
        }
        if (usedHeader.size() > 0) {
            statsString.append("</tr>\n");
        }
        tds.append("</tr>\n");
          }
          statsString.append(tds);
          statsString.append("</table>\n");
      }
        }
    }
    values.add(statsString.toString());
      }
  }
  sb.append("<div title=\"columns\">\n");
  sb.append("<table border=\"1\">\n");
  sb.append("<tr>\n");
  for (String header : usedHeader) {
      sb.append("<th>").append(header).append("</th>\n");
  }
  sb.append("</tr>\n");
  for (int i = 0; i < values.size(); i += usedHeader.size()) {
      sb.append("<tr>\n");
      for (int j = i; j < values.size(); j++) {
    if (values.get(j).equals(END_COLUMN)) {
        sb.append("</tr>\n");
        i++;
        break;
    } else {
        sb.append("<td>").append(values.get(j)).append("</td>\n");
    }
      }
  }
  sb.append("</table>\n");
  sb.append("</div>\n");
  return sb.toString();
    }

    /**
     * returns a HTML String representation of the stats of a form.
     * 
     * @return string representation of stats of a form in HTML.
     */
    private String getHTMLStatsString(Stats fs) {
  StringBuilder sb = new StringBuilder();
  StringBuilder tds;
  boolean added = false;
  ArrayList<StatsAnswerHolder> sah = new ArrayList<StatsAnswerHolder>();
  HashSet<String> usedHeader = new HashSet<String>();
  for (AbstractStatsQuestion fsq : fs.questions) {
      sah = fsq.getResultFromFormAsValue(form);
      sb.append("<table border=\"1\">\n");
      sb.append("<tr><td title=\"question\">\n");
      sb.append(fs.name).append("\n");
      sb.append("</td></tr>\n");
      for (StatsAnswerHolder ssah : sah) {
    sb.append("<tr><td>\n");
    usedHeader.clear();
    SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
    String startTime = "";
    String endTime = "";
    if (ssah.end != null && ssah.start != null) {
        Calendar c1 = Calendar.getInstance();
        Calendar c2 = Calendar.getInstance();
        c1.setTimeInMillis(ssah.start);
        c2.setTimeInMillis(ssah.end);
        startTime = fmt.format(new Date(ssah.start));
        if (c1.get(Calendar.DAY_OF_YEAR) != c2
          .get(Calendar.DAY_OF_YEAR)) {
      endTime = fmt.format(new Date(ssah.end));
        }
    }
    tds = new StringBuilder();
    sb.append("<table border=\"1\">\n");
    if (!startTime.equals("") || !endTime.equals("")) {
        sb.append("<tr>\n");
        if (!startTime.equals("")) {
      sb.append("<td title=\"startTime\">").append(startTime)
        .append("</td>\n");
        }
        if (!endTime.equals("")) {
      sb.append("<td title=\"endTime\">").append(endTime)
        .append("</td>\n");
        }
        sb.append("</tr>\n");
    }
    for (QueryResultRow qrr : ssah.table.rows) {
        if (usedHeader.size() == 0) {
      sb.append("<tr>\n");
        }
        tds.append("<tr>\n");
        for (QueryResultCell qrc : qrr.cells) {
      if (usedHeader.add(qrc.getColumnname())) {
          sb.append("<th>");
          sb.append(qrc.getColumnname());
          sb.append("</th>\n");
      }
      tds.append("<td>");
      tds.append(qrc.getData());
      tds.append("</td>\n");
        }
        if (usedHeader.size() > 0 && added == false) {
      sb.append("</tr>\n");
      added = true;
        }
        tds.append("</tr>\n");
    }
    sb.append(tds);
    sb.append("</table>");
    sb.append("</td></tr>\n");
      }
      // sah.get(0).table.rows.get(0).cells.get(0).getColumnname();
      sb.append("</table>\n");
  }
  return sb.toString();
    }

    private String getCellString() {
  ArrayList<FormCell> cells = form.cells;
  int cellLength = cells.size();
  String str = "";
  for (int i = 0; i < cellLength; i++) {
      String temp = populateCell(cells.get(i));
      str += temp + "\n";
  }
  return str;
    }


    private String getColumnString() {
  HashSet<String> joinedTables = new HashSet<String>();
  String select = "SELECT ";
  String from = " FROM history history_table "
    + QueryHelper.joinTable(form.constraints, joinedTables);
  String where = " WHERE history_table.end_time <= " + formEndDate
    + " AND history_table.end_time >= " + formStartDate;
  
  if (mActivity instanceof ClinicalGuideActivity) {
      String additionalConstraint = QueryHelper.addToWhere((ClinicalGuideActivity)mActivity, form.constraints);
      where += additionalConstraint.trim().isEmpty() ? "" : " AND " + additionalConstraint;
  }

  FormColumn column = form.column;
  if (column == null) {
      return "";
  }
  int columnLength = column.data.size();

  ArrayList<HashMap<String, String>> arrMap = column.savedItems;
  int arrLen = arrMap.size();
  for (int i = 0; i < arrLen;) {
      HashMap<String, String> map = arrMap.get(i);
      String savedCol = map.get("columnname");
      String savedTable = map.get("tablename");
      if (savedCol != null && savedTable != null) {
    from += " " + QueryHelper.joinTable(savedTable, joinedTables);
    select += " " + savedTable + "." + savedCol + " " + " AS \""
      + "SAVEDCOLUMN_" + savedTable + "_" + savedCol + "\"";
      }
      if (++i < arrLen) {
    select += ", ";
      }

  }

  if (arrLen > 0 && columnLength > 0) {
      select += ", ";
  }

  for (int i = 0; i < columnLength;) {
      HashMap<String, String> data = column.data.get(i);
      String tablename = data.get("tablename");

      from += QueryHelper.joinTable(tablename, joinedTables);

      String columnname = data.get("columnname");

      if (tablename.equalsIgnoreCase("patient_details_table")
        && columnname.equalsIgnoreCase("age")) {
    select += " " + tablename + ".birthdate AS \"patient_age\"";
      } else {

    select += " " + tablename + "." + columnname + " " + " AS "
      + tablename + "_" + columnname + " ";
      }
      if (++i < columnLength) {
    select += ", ";
      }

  }

  String columnOutput = "";
  QueryResultTable columnResults = db.executeSQLstatement(select + from
    + where);
  ArrayList<QueryResultRow> rows = columnResults.rows;
  int rowLen = rows.size();
  for (int i = 0; i < rowLen; i++) {
      ArrayList<QueryResultCell> cells = rows.get(i).cells;
      ArrayList<HashMap<String, String>> saved = new ArrayList<HashMap<String, String>>();

      int cellLen = cells.size();
      for (int j = 0; j < cellLen; j++) {
    QueryResultCell cell = cells.get(j);
    if (cell.getColumnname().startsWith("SAVEDCOLUMN_")) {
        HashMap<String, String> m = new HashMap<String, String>();
        m.put("tablename", cell.getColumnname());
        m.put("value", cell.getData());
        saved.add(m);
    } else if (cell.getColumnname().equalsIgnoreCase("patient_age")) {
        long bday = DateHelper.changeTextDateToLong(cell.getData());
        int age = DateHelper.calculateAge(bday);
        columnOutput += cell.getColumnname() + ": " + age + "\n";
    } else {
        columnOutput += cell.getColumnname() + ": "
          + cell.getData() + "\n";
    }
      }
      columnOutput += populateStatsForColumn(saved) + "\n";
      columnOutput += "===========================\n";
  }

  return columnOutput;
    }

    private String populateStatsForColumn(ArrayList<HashMap<String, String>> saved) {
  String retVal = "";
  int len = saved.size();
  ArrayList<StatsConstraint> arrFc = new ArrayList<StatsConstraint>();
  arrFc.addAll(form.constraints);
  for (int i = 0; i < len; i++) {
      HashMap<String, String> map = saved.get(i);
      String table = map.get("tablename");
      String value = map.get("value");
      table = table.replace("SAVEDCOLUMN_", "");
      String[] sArr = table.split("_table_", 2);
      sArr[0] += "_table";
      arrFc.add(new StatsConstraint(sArr[0], sArr[1], value, null));

  }

  retVal = getStatsString(form.column.stats, arrFc);

  return retVal;
    }

    private String getStatsString(ArrayList<Stats> statsArr,
      ArrayList<StatsConstraint> arrFc) {
  String retVal = "";
  int len = statsArr.size();
  for (int i = 0; i < len; i++) {
      Stats stats = statsArr.get(i);
      retVal += "\n[" + stats.name.toUpperCase() + "]\n";
      ArrayList<AbstractStatsQuestion> statsQArr = stats.questions;
      int qLen = statsQArr.size();
      for (int j = 0; j < qLen; j++) {
    AbstractStatsQuestion statsQ = statsQArr.get(j);
    String str = statsQ.getResultFromFormAsString(form, arrFc);
    retVal += str + "\n";
      }
  }
  return retVal;
    }
    /**
     * Retuns a String with a format "[name of cell]: [value of cell]"
     * 
     * @param cell
     *            The cell to turn into string
     * @return A String with a format "[name of cell]: [value of cell]"
     */
    private String populateCell(FormCell cell) {
  String name = "";
  String type = "";
  String value = "";
  StringBuilder retVal = new StringBuilder();

  name = cell.name + ": ";
  type = cell.type;
  if (type.equalsIgnoreCase("input")) {
      return "";
  }
  value = getCellValue(cell, type);
  retVal.append(name).append(value);
  return retVal.toString();
    }

    private String getCellValue(FormCell cell, String type) {
  String retVal = "";
  if (type.equalsIgnoreCase("query")) {
      String value = cell.value;
      String userid = "";
      if (mActivity instanceof ClinicalGuideActivity) {
    userid = ((ClinicalGuideActivity) mActivity).getUser().id + "";
      }
      String query = "SELECT " + value + " FROM user  WHERE user.id = '"
        + userid + "'";
      QueryResultTable result = db.executeSQLstatement(query);
      String val = "";
      Log.v("cell query", query);
      int size = result.rows.size();
      if (size < 1) {
    Toast.makeText(mActivity,
      "Sorry! No " + value + " found with the id " + userid,
      Toast.LENGTH_LONG).show();
      } else {
    val = result.rows.get(0).cells.get(0).getData(); //get first row first column (there should only be one result)
      }
      retVal = val;
  } else if (type.equalsIgnoreCase("defined")) {
      retVal = cell.value;
  } else if (type.equalsIgnoreCase("current_date")) {
      retVal = cell.getCurrentDateValue();
  } 
  return retVal;
    }

    
    /**
     * Gets the start day of the form depending on its duration.
     * 
     * @return A long representing milliseconds which can be transformed to
     *         date.
     */
    public long getStartDay() {
  long retVal = -1;
  retVal = new DateHelper(form.duration).getStartDay(form.getEndDate());
  return retVal;
    }

}




Java Source Code List

.PatientDetailsDataSource.java
org.get.oxicam.clinicalguide.ClinicalGuideActivity.java
org.get.oxicam.clinicalguide.FileUtils.java
org.get.oxicam.clinicalguide.LoginActivity.java
org.get.oxicam.clinicalguide.db.DatabaseHelper.java
org.get.oxicam.clinicalguide.db.Database.java
org.get.oxicam.clinicalguide.db.FollowupDataSource.java
org.get.oxicam.clinicalguide.db.FollowupDetails.java
org.get.oxicam.clinicalguide.db.FollowupSQLHelper.java
org.get.oxicam.clinicalguide.db.HistoryDetailsDataSource.java
org.get.oxicam.clinicalguide.db.HistoryDetailsSQLHelper.java
org.get.oxicam.clinicalguide.db.HistoryDetails.java
org.get.oxicam.clinicalguide.db.PatientDetailsSQLHelper.java
org.get.oxicam.clinicalguide.db.PatientDetails.java
org.get.oxicam.clinicalguide.db.RegistrationValidator.java
org.get.oxicam.clinicalguide.db.Validator.java
org.get.oxicam.clinicalguide.encryption.Encryption.java
org.get.oxicam.clinicalguide.ui.AnswersReviewFragment.java
org.get.oxicam.clinicalguide.ui.AssessmentDetailFragment.java
org.get.oxicam.clinicalguide.ui.ClassificationFragment.java
org.get.oxicam.clinicalguide.ui.ClassificationListItem.java
org.get.oxicam.clinicalguide.ui.DatePickerFragment.java
org.get.oxicam.clinicalguide.ui.ExportFragment.java
org.get.oxicam.clinicalguide.ui.ExportscreenListItem.java
org.get.oxicam.clinicalguide.ui.FollowUpFragment.java
org.get.oxicam.clinicalguide.ui.FormScreenFragment.java
org.get.oxicam.clinicalguide.ui.HomescreenFragment.java
org.get.oxicam.clinicalguide.ui.HomescreenListItem.java
org.get.oxicam.clinicalguide.ui.ListItemOnClickListener.java
org.get.oxicam.clinicalguide.ui.MainSymptomFragment.java
org.get.oxicam.clinicalguide.ui.MainSymptomListItem.java
org.get.oxicam.clinicalguide.ui.NumberTickerValueChangeListener.java
org.get.oxicam.clinicalguide.ui.NumberTicker.java
org.get.oxicam.clinicalguide.ui.PatientDetailsFragment.java
org.get.oxicam.clinicalguide.ui.PatientHistoryFragment.java
org.get.oxicam.clinicalguide.ui.PatientsFragment.java
org.get.oxicam.clinicalguide.ui.QuestionListItem.java
org.get.oxicam.clinicalguide.ui.QuestionnaireFragment.java
org.get.oxicam.clinicalguide.ui.StatScreenFragment.java
org.get.oxicam.clinicalguide.ui.SummaryScreenFragment.java
org.get.oxicam.clinicalguide.ui.TextViewCustomFont.java
org.get.oxicam.clinicalguide.ui.TreatmentConfirmationDialog.java
org.get.oxicam.clinicalguide.ui.TreatmentFragment.java
org.get.oxicam.clinicalguide.ui.TreatmentListItem.java
org.get.oxicam.clinicalguide.ui.ViewDetailScreenFragment.java
org.get.oxicam.clinicalguide.xml.CGFormParser.java
org.get.oxicam.clinicalguide.xml.CGParser.java
org.get.oxicam.clinicalguide.xml.CGStatsParser.java
org.get.oxicam.clinicalguide.xml.DateHelper.java
org.get.oxicam.clinicalguide.xml.FormGenerator.java
org.get.oxicam.clinicalguide.xml.ParserHelper.java
org.get.oxicam.clinicalguide.xml.StatsGenerator.java
org.get.oxicam.clinicalguide.xml.XMLHandler.java
org.get.oxicam.clinicalguide.xml.data.AbstractAnswer.java
org.get.oxicam.clinicalguide.xml.data.Annotation.java
org.get.oxicam.clinicalguide.xml.data.AnswerValidator.java
org.get.oxicam.clinicalguide.xml.data.Answer.java
org.get.oxicam.clinicalguide.xml.data.Assessment.java
org.get.oxicam.clinicalguide.xml.data.CombinedAnswer.java
org.get.oxicam.clinicalguide.xml.data.FollowUp.java
org.get.oxicam.clinicalguide.xml.data.FormQuery.java
org.get.oxicam.clinicalguide.xml.data.Info.java
org.get.oxicam.clinicalguide.xml.data.Option.java
org.get.oxicam.clinicalguide.xml.data.PatientAttribute.java
org.get.oxicam.clinicalguide.xml.data.Question.java
org.get.oxicam.clinicalguide.xml.data.Questionnaire.java
org.get.oxicam.clinicalguide.xml.data.SimpleAnswer.java
org.get.oxicam.clinicalguide.xml.data.Symptom.java
org.get.oxicam.clinicalguide.xml.data.TreatmentAction.java
org.get.oxicam.clinicalguide.xml.data.Treatment.java
org.get.oxicam.clinicalguide.xml.data.User.java
org.get.oxicam.clinicalguide.xml.forms.FormCell.java
org.get.oxicam.clinicalguide.xml.forms.FormColumn.java
org.get.oxicam.clinicalguide.xml.forms.FormDuration.java
org.get.oxicam.clinicalguide.xml.forms.Form.java
org.get.oxicam.clinicalguide.xml.query.QueryHelper.java
org.get.oxicam.clinicalguide.xml.query.QueryResultCell.java
org.get.oxicam.clinicalguide.xml.query.QueryResultRow.java
org.get.oxicam.clinicalguide.xml.query.QueryResultTable.java
org.get.oxicam.clinicalguide.xml.stats.AbstractStatsQuestion.java
org.get.oxicam.clinicalguide.xml.stats.StatsAnswerHolder.java
org.get.oxicam.clinicalguide.xml.stats.StatsColumnCompare.java
org.get.oxicam.clinicalguide.xml.stats.StatsComparatorOperator.java
org.get.oxicam.clinicalguide.xml.stats.StatsCompareConstraint.java
org.get.oxicam.clinicalguide.xml.stats.StatsConstraint.java
org.get.oxicam.clinicalguide.xml.stats.StatsQuestionAverage.java
org.get.oxicam.clinicalguide.xml.stats.StatsQuestionCount.java
org.get.oxicam.clinicalguide.xml.stats.StatsQuestionExtrema.java
org.get.oxicam.clinicalguide.xml.stats.StatsQuestionFactory.java
org.get.oxicam.clinicalguide.xml.stats.StatsQuestionList.java
org.get.oxicam.clinicalguide.xml.stats.StatsQuestionPercentage.java
org.get.oxicam.clinicalguide.xml.stats.StatsQuestionRatio.java
org.get.oxicam.clinicalguide.xml.stats.StatsSubject.java
org.get.oxicam.clinicalguide.xml.stats.StatsTimespan.java
org.get.oxicam.clinicalguide.xml.stats.Stats.java