/* * 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.HashMap; import javax.sql.DataSource; import org.akaza.openclinica.bean.extract.DatasetBean; import org.akaza.openclinica.bean.managestudy.StudyBean; import org.akaza.openclinica.bean.odmbeans.ODMBean; import org.akaza.openclinica.bean.odmbeans.OdmClinicalDataBean; import org.akaza.openclinica.dao.extract.OdmExtractDAO; /** * A class for one ODM ClinicalData Element. * * @author ywang (May, 2009) */ public class ClinicalDataUnit extends OdmUnit { private OdmClinicalDataBean odmClinicalData; private String studySubjectIds; public ClinicalDataUnit() { } public ClinicalDataUnit(DataSource ds, StudyBean study, int category) { super(ds, study, category); this.odmClinicalData = new OdmClinicalDataBean(); } public ClinicalDataUnit(DataSource ds, DatasetBean dataset, ODMBean odmBean, StudyBean study, int category) { super(ds, dataset, odmBean, study, category); this.odmClinicalData = new OdmClinicalDataBean(); } public ClinicalDataUnit(DataSource ds, DatasetBean dataset, ODMBean odmBean, StudyBean study, int category, String studySubjectIds) { super(ds, dataset, odmBean, study, category); this.odmClinicalData = new OdmClinicalDataBean(); this.studySubjectIds = studySubjectIds; } public void collectOdmClinicalData() { StudyBean study = studyBase.getStudy(); String studyOID = study.getOid(); if (studyOID == null || studyOID.length() <= 0) { logger.info("Constructed studyOID using study_id because oc_oid is missing from the table - study."); studyOID = "" + study.getId(); } odmClinicalData.setStudyOID(studyOID); OdmExtractDAO oedao = new OdmExtractDAO(this.ds); if (this.getCategory() == 1 && study.isSite(study.getParentStudyId())) { String mvoid = ""; if (this.dataset != null) { mvoid = this.dataset.getODMMetaDataVersionOid(); } if (mvoid.length() > 0) { mvoid += "-" + studyOID; } else { mvoid = "v1.0.0" + "-" + studyOID; } odmClinicalData.setMetaDataVersionOID(mvoid); } else { odmClinicalData.setMetaDataVersionOID(this.dataset.getODMMetaDataVersionOid()); if (odmClinicalData.getMetaDataVersionOID() == null || odmClinicalData.getMetaDataVersionOID().length() <= 0) { odmClinicalData.setMetaDataVersionOID("v1.0.0"); } } oedao.getClinicalData(study, this.dataset, odmClinicalData, this.odmBean.getODMVersion(), studySubjectIds, this.odmBean.getOdmType()); } public OdmClinicalDataBean getOdmClinicalData() { return odmClinicalData; } public void setOdmClinicalData(OdmClinicalDataBean odmClinicalData) { this.odmClinicalData = odmClinicalData; } public static Boolean isNull(String itValue, String key, HashMap<String, String> nullValueCVs) { if (nullValueCVs.containsKey(key)) { String[] nullvalues = nullValueCVs.get(key).split(","); String[] values = itValue.split(","); for(String v : values) { v = v.trim(); for (String n : nullvalues) { if (v.equals(n)) { return true; } } } } return false; } public String getStudySubjectIds() { return studySubjectIds; } public void setStudySubjectIds(String studySubjectIds) { this.studySubjectIds = studySubjectIds; } }