package edu.harvard.i2b2.crc.loader.ejb;
import java.util.List;
import edu.harvard.i2b2.common.exception.I2B2DAOException;
import edu.harvard.i2b2.common.exception.I2B2Exception;
import edu.harvard.i2b2.common.util.jaxb.DTOFactory;
import edu.harvard.i2b2.crc.loader.dao.ILoaderDAOFactory;
import edu.harvard.i2b2.crc.loader.dao.IMissingTermDAO;
import edu.harvard.i2b2.crc.loader.dao.IUploaderDAOFactory;
import edu.harvard.i2b2.crc.loader.dao.LoaderDAOFactoryHelper;
import edu.harvard.i2b2.crc.loader.dao.UploadStatusDAOI;
import edu.harvard.i2b2.crc.datavo.i2b2message.SecurityType;
import edu.harvard.i2b2.crc.loader.datavo.loader.DataSourceLookup;
import edu.harvard.i2b2.crc.loader.datavo.loader.UploadStatus;
import edu.harvard.i2b2.crc.loader.datavo.loader.query.GetMissingTermRequestType;
import edu.harvard.i2b2.crc.loader.datavo.loader.query.LoadDataListResponseType;
import edu.harvard.i2b2.crc.loader.datavo.loader.query.LoadDataResponseType;
import edu.harvard.i2b2.crc.loader.datavo.loader.query.MissingCodesConceptSetType;
import edu.harvard.i2b2.crc.loader.datavo.loader.query.MissingCodesModifierSetType;
import edu.harvard.i2b2.crc.loader.datavo.loader.query.MissingCodesObserverSetType;
import edu.harvard.i2b2.crc.loader.datavo.loader.query.MissingTermReportResponseType;
import edu.harvard.i2b2.crc.loader.datavo.loader.query.MissingTermReportResponseType.MissingCodes;
import edu.harvard.i2b2.crc.loader.datavo.loader.query.MissingTermReportResponseType.MissingTermReport;
import edu.harvard.i2b2.crc.loader.datavo.loader.query.MissingTermSetReportType;
public class MissingTermReportBean implements MissingTermReportBeanLocal,
MissingTermReportBeanRemote {
private DTOFactory dtoFactory = new DTOFactory();
public MissingTermReportResponseType getMissingTermReport(DataSourceLookup dataSourceLookup, GetMissingTermRequestType getMissingTermMessage) throws I2B2Exception {
MissingTermReportResponseType missingTermReportResp = new MissingTermReportResponseType();
LoaderDAOFactoryHelper daoHelper = new LoaderDAOFactoryHelper(
dataSourceLookup.getDomainId(),
dataSourceLookup.getProjectPath(),
dataSourceLookup.getOwnerId());
ILoaderDAOFactory loaderDaoFactory = daoHelper.getDAOFactory();
IUploaderDAOFactory uploaderDaoFactory = loaderDaoFactory
.getUpLoaderDAOFactory();
IMissingTermDAO missingTermDao = uploaderDaoFactory.getMissingTermDAO();
String uploadId = getMissingTermMessage.getUploadId();
int uploadIdInt = 0;
if (uploadId != null) {
uploadIdInt = Integer.parseInt(uploadId);
}
getMissingTermMessage.getConceptSet().isDetail();
MissingCodes missingCodes = new MissingCodes();
// call for concept
if (getMissingTermMessage.getConceptSet() != null) {
MissingCodesConceptSetType missingConceptSet= missingTermDao
.getMissingConceptSet(uploadIdInt, getMissingTermMessage.getConceptSet().getStart(),
getMissingTermMessage.getConceptSet().getStop(), getMissingTermMessage.getConceptSet().isDetail());
missingCodes.setConceptSet(missingConceptSet);
}
// call for provider
if (getMissingTermMessage.getObserverSet() != null) {
MissingCodesObserverSetType missingObserverSet= missingTermDao
.getMissingObserverSet(uploadIdInt, getMissingTermMessage.getObserverSet().getStart(), getMissingTermMessage.getObserverSet().getStop(), getMissingTermMessage.getObserverSet().isDetail());
missingCodes.setObserverSet(missingObserverSet);
}
// call for modifier
if (getMissingTermMessage.getObserverSet() != null) {
MissingCodesModifierSetType missingModifierSet = missingTermDao
.getMissingModifierSet(uploadIdInt, getMissingTermMessage.getModifierSet().getStart(), getMissingTermMessage.getModifierSet().getStop(), getMissingTermMessage.getModifierSet().isDetail());
missingCodes.setModifierSet(missingModifierSet);
}
// build response and return
missingTermReportResp.setMissingCodes(missingCodes);
MissingTermReport missingTermReportType = new MissingTermReport();
missingTermReportType.setConceptSet(missingTermDao.getMissingTermReport(uploadIdInt, "concept_set"));
missingTermReportType.setModifierSet(missingTermDao.getMissingTermReport(uploadIdInt, "modifier_set"));
missingTermReportType.setObserverSet(missingTermDao.getMissingTermReport(uploadIdInt, "observer_set"));
missingTermReportResp.setMissingTermReport(missingTermReportType);
return missingTermReportResp;
}
}