/* * Copyright (c) 2006-2007 Massachusetts General Hospital * All rights reserved. This program and the accompanying materials * are made available under the terms of the i2b2 Software License v1.0 * which accompanies this distribution. * * Contributors: * Rajesh Kuttan */ package edu.harvard.i2b2.crc.dao.pdo.output; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Iterator; import java.util.List; import edu.harvard.i2b2.crc.datavo.pdo.ParamType; import edu.harvard.i2b2.crc.datavo.pdo.query.OutputOptionType; /** * Class to generate select, join, where clause for Visit dimenstion based on * pdo's OutputOptionType $Id: VisitFactRelated.java,v 1.4 2007/08/31 14:43:33 * rk903 Exp $ * * @author rkuttan */ public class VisitFactRelated extends FactRelated { List<ParamType> metaDataParamList ; public VisitFactRelated(OutputOptionType outputOptionType) { super(outputOptionType); } public void setMetaDataParamList(List<ParamType> metaDataParamList) { this.metaDataParamList = metaDataParamList; } private String buildCustomSelectClause(String prefix) { String detailSelectClause = " "; for (Iterator<ParamType> iterator = this.metaDataParamList.iterator();iterator.hasNext();) { ParamType paramType = iterator.next(); detailSelectClause += prefix + "." + paramType.getColumn() + " " + prefix + "_" + paramType.getColumn(); if (iterator.hasNext()) { detailSelectClause += " , "; } } return detailSelectClause; } public String getSelectClause() { String selectClause = ""; if (isSelected()) { selectClause = " visit.encounter_num visit_encounter_num, visit.patient_num visit_patient_num "; if (isSelectDetail()) { selectClause += ", visit.start_date visit_start_date,visit.end_date visit_end_date "; selectClause += "," + buildCustomSelectClause("visit"); } if (isSelectBlob()) { selectClause += ", visit.visit_blob visit_visit_blob "; } if (isSelectStatus()) { selectClause += " , visit.update_date visit_update_date, visit.download_date visit_download_date, visit.import_date visit_import_date, visit.sourcesystem_cd visit_sourcesystem_cd, visit.upload_id visit_upload_id "; } } return selectClause; } public String joinClause() { if (isSelected()) { return " left join VISIT_DIMENSION visit on (obs.encounter_num = visit.encounter_num and obs.patient_num = visit.patient_num) "; } else { return ""; } } public String[] getAliasFieldName() { // get select clause and fetch corresponding data to build visit // dimension String selectClause = getSelectClause(); String[] fields = selectClause.split(","); int i = 0; String[] aliasFieldName = new String[fields.length]; while (i <= fields.length) { aliasFieldName[i] = fields[i].substring(fields[i].indexOf(' '), fields[i].length()); i++; } return aliasFieldName; } public int getEncounterNumFromResultSet(ResultSet resultSet) throws SQLException { return resultSet.getInt("obs_encounter_num"); } }