package us.mn.state.health.lims.analyzerimport.analyzerreaders;
import java.sql.Timestamp;
import java.util.List;
import us.mn.state.health.lims.analysis.dao.AnalysisDAO;
import us.mn.state.health.lims.analysis.daoimpl.AnalysisDAOImpl;
import us.mn.state.health.lims.analysis.valueholder.Analysis;
import us.mn.state.health.lims.analyzerresults.valueholder.AnalyzerResults;
import us.mn.state.health.lims.common.services.StatusService;
import us.mn.state.health.lims.common.services.StatusService.AnalysisStatus;
import us.mn.state.health.lims.result.dao.ResultDAO;
import us.mn.state.health.lims.result.daoimpl.ResultDAOImpl;
import us.mn.state.health.lims.result.valueholder.Result;
import us.mn.state.health.lims.sample.dao.SampleDAO;
import us.mn.state.health.lims.sample.daoimpl.SampleDAOImpl;
import us.mn.state.health.lims.sample.valueholder.Sample;
public class AnalyzerReaderUtil {
private SampleDAO sampleDAO = new SampleDAOImpl();
private AnalysisDAO analysisDAO = new AnalysisDAOImpl();
private ResultDAO resultDAO = new ResultDAOImpl();
public AnalyzerResults createAnalyzerResultFromDB(AnalyzerResults resultFromAnalyzer) {
Sample sample = sampleDAO.getSampleByAccessionNumber(resultFromAnalyzer.getAccessionNumber());
if( sample != null && sample.getId() != null){
List<Analysis> analysisList = analysisDAO.getAnalysesBySampleId(sample.getId());
String acceptedStatusId = StatusService.getInstance().getStatusID(AnalysisStatus.TechnicalAcceptance);
for(Analysis analysis : analysisList ){
if(analysis.getStatusId().equals(acceptedStatusId) && analysis.getTest().getId().equals(resultFromAnalyzer.getTestId())){
List<Result> resultList = resultDAO.getResultsByAnalysis(analysis);
if( resultList.size() > 0){
try {
AnalyzerResults resultFromDB = (AnalyzerResults) resultFromAnalyzer.clone();
resultFromDB.setResult(resultList.get(resultList.size() - 1 ).getValue());
resultFromDB.setCompleteDate(new Timestamp(analysis.getCompletedDate().getTime()));
resultFromDB.setReadOnly(true);
resultFromDB.setResultType(resultFromAnalyzer.getResultType());
return resultFromDB;
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
}
}
}
}
return null;
}
}