package edu.harvard.i2b2.crc.dao.setfinder.querybuilder;
import edu.harvard.i2b2.crc.datavo.ontology.ConceptType;
import edu.harvard.i2b2.crc.util.ItemKeyUtil;
public class ConceptTypeHandler {
private String queryXML = null;
StringBuffer ignoredItemMessageBuffer = new StringBuffer();
public ConceptTypeHandler(String queryXML) {
this.queryXML = queryXML;
}
public ConceptType getConceptType(String itemKey, String dbType)
throws ConceptNotFoundException, OntologyException {
ConceptType conceptType = null;
// if patient list
if (itemKey.toLowerCase().startsWith(ItemKeyUtil.ITEM_KEY_PATIENT_SET)) {
String[] patientSetId = itemKey.split(":");
if (patientSetId[1] != null) {
conceptType = new ConceptType();
conceptType.setColumnname(" result_instance_id ");
conceptType.setOperator(" = ");
conceptType.setFacttablecolumn(" patient_num ");
conceptType.setTablename("qt_patient_set_collection ");
conceptType.setDimcode(patientSetId[1]);
}
} else if (itemKey.toLowerCase().startsWith(ItemKeyUtil.ITEM_KEY_PATIENT_ENCOUNTER_SET)) { // if event
String[] encounterSetId = itemKey.split(":");
if (encounterSetId[1] != null) {
conceptType = new ConceptType();
conceptType.setColumnname(" result_instance_id ");
conceptType.setOperator(" = ");
conceptType.setFacttablecolumn(" encounter_num ");
conceptType.setTablename("qt_patient_enc_collection ");
conceptType.setDimcode(encounterSetId[1]);
}
} else if (itemKey.toLowerCase().startsWith(ItemKeyUtil.ITEM_KEY_MASTERID)) {
String[] masterId = itemKey.split(":");
conceptType = new ConceptType();
conceptType.setDimcode("'" + masterId[1] + "'");
} else {
ItemMetaDataHandler metadataHandler = new ItemMetaDataHandler(
queryXML);
conceptType = metadataHandler.getMetaDataFromOntologyCell(itemKey, dbType);
}
return conceptType;
}
public void handleConceptNotFoundException(ConceptNotFoundException e,
int panelCount) {
ignoredItemMessageBuffer
.append(e.getMessage() + " panel#" + panelCount);
}
public String getIgnoredItem() {
return ignoredItemMessageBuffer.toString();
}
}