/* * OpenClinica is distributed under the GNU Lesser General Public License (GNU * LGPL). * * For details see: http://www.openclinica.org/license copyright 2003-2005 Akaza * Research * */ package org.akaza.openclinica.logic.odmExport; import java.util.Iterator; import java.util.LinkedHashMap; import javax.sql.DataSource; import org.akaza.openclinica.bean.extract.DatasetBean; import org.akaza.openclinica.bean.managestudy.StudyBean; import org.akaza.openclinica.bean.odmbeans.OdmClinicalDataBean; import org.akaza.openclinica.dao.managestudy.StudySubjectDAO; import org.akaza.openclinica.job.JobTerminationMonitor; /** * Populate ODM ClinicalData Element for a ODM XML file. It supports: * <ul> * <li>ODM XML file contains only one ODM ClinicalData element. </li> * <li>ODM XML file contains multiple ClinicalData elements - one parent study * and its site(s). </li> * </ul> * * @author ywang (May, 2009) */ public class ClinicalDataCollector extends OdmDataCollector { private LinkedHashMap<String, OdmClinicalDataBean> odmClinicalDataMap; /** * * @param ds * @param dataset */ public ClinicalDataCollector(DataSource ds, DatasetBean dataset, StudyBean currentStudy) { super(ds, dataset, currentStudy); this.odmClinicalDataMap = new LinkedHashMap<String, OdmClinicalDataBean>(); } @Override public void collectFileData() { this.collectOdmRoot(); this.collectOdmClinicalDataMap(); } public void collectOdmClinicalDataMap() { Iterator<OdmStudyBase> it = this.getStudyBaseMap().values().iterator(); while (it.hasNext()) { JobTerminationMonitor.check(); OdmStudyBase u = it.next(); ClinicalDataUnit cdata = new ClinicalDataUnit(this.ds, this.dataset, this.getOdmbean(), u.getStudy(), this.getCategory()); cdata.setCategory(this.getCategory()); StudySubjectDAO ssdao = new StudySubjectDAO(this.ds); cdata.setStudySubjectIds(ssdao.findStudySubjectIdsByStudyIds(u.getStudy().getId()+"")); cdata.collectOdmClinicalData(); odmClinicalDataMap.put(u.getStudy().getOid(), cdata.getOdmClinicalData()); } } public LinkedHashMap<String, OdmClinicalDataBean> getOdmClinicalDataMap() { return odmClinicalDataMap; } public void setOdmClinicalDataMap(LinkedHashMap<String, OdmClinicalDataBean> odmClinicalDataMap) { this.odmClinicalDataMap = odmClinicalDataMap; } }