/* 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.bean.extract.odm;
import org.akaza.openclinica.bean.odmbeans.OdmAdminDataBean;
import org.akaza.openclinica.bean.odmbeans.OdmClinicalDataBean;
import org.akaza.openclinica.bean.odmbeans.OdmStudyBean;
import org.akaza.openclinica.dao.core.CoreResources;
import java.util.Iterator;
import java.util.LinkedHashMap;
/**
* Create one ODM XML file.
*
* @author ywang (May, 2008)
*/
public class FullReportBean extends OdmXmlReportBean {
private LinkedHashMap<String, OdmStudyBean> odmStudyMap;
private LinkedHashMap<String, OdmClinicalDataBean> clinicalDataMap;
private LinkedHashMap<String, OdmAdminDataBean> adminDataMap;
private OdmClinicalDataBean clinicaldata;
private CoreResources coreResources;
/**
* Create one ODM XML This method is still under construction. Right now it is for Snapshot filetype only.
*/
@Override
public void createOdmXml(boolean isDataset) {
this.addHeading();
this.addRootStartLine();
// add the contents here in order
// 1) the information about Study
Iterator<OdmStudyBean> itm = this.odmStudyMap.values().iterator();
while (itm.hasNext()) {
OdmStudyBean s = itm.next();
addNodeStudy(s, isDataset);
}
// 2) the information about administrative data
String ODMVersion = this.getODMVersion();
if ("oc1.2".equalsIgnoreCase(ODMVersion) || "oc1.3".equalsIgnoreCase(ODMVersion)) {
Iterator<OdmAdminDataBean> ita = this.adminDataMap.values().iterator();
while (ita.hasNext()) {
OdmAdminDataBean a = ita.next();
addNodeAdminData(a);
}
}
// 3) the information about reference data
// addNodeReferenceData();
// 4) the information about clinical Data
Iterator<OdmClinicalDataBean> itc = this.clinicalDataMap.values().iterator();
while (itc.hasNext()) {
OdmClinicalDataBean c = itc.next();
if (c.getExportSubjectData().size() > 0) {
addNodeClinicalData(c);
}
}
this.addRootEndLine();
}
/**
* Currently, it incudes <MetadataVersion> and <AdminData>
*
* @param isDataset
*/
public void createStudyMetaOdmXml(boolean isDataset) {
this.addHeading();
this.addRootStartLine();
// add the contents here in order
// 1) the information about Study
Iterator<OdmStudyBean> itm = this.odmStudyMap.values().iterator();
while (itm.hasNext()) {
OdmStudyBean s = itm.next();
addNodeStudy(s, isDataset);
}
// 2) the information about administrative data
Iterator<OdmAdminDataBean> ita = this.adminDataMap.values().iterator();
while (ita.hasNext()) {
OdmAdminDataBean a = ita.next();
addNodeAdminData(a);
}
this.addRootEndLine();
}
public void createChunkedOdmXml(boolean isDataset, boolean header, boolean footer) {
ClinicalDataReportBean data = new ClinicalDataReportBean(this.clinicaldata);
data.setXmlOutput(this.getXmlOutput());
data.setODMVersion(this.getODMVersion());
data.addNodeClinicalData(header, footer);
}
public void addNodeStudy(OdmStudyBean odmstudy, boolean isDataset) {
MetaDataReportBean meta = new MetaDataReportBean(odmstudy, getCoreResources());
meta.setODMVersion(this.getODMVersion());
meta.setXmlOutput(this.getXmlOutput());
meta.addNodeStudy(isDataset);
}
/*
* Currently, this only be called for OpenClinica ODM extension
*/
private void addNodeAdminData(OdmAdminDataBean adminData) {
AdminDataReportBean admin = new AdminDataReportBean(adminData);
admin.setODMVersion(this.getODMVersion());
admin.setXmlOutput(this.getXmlOutput());
admin.addNodeAdminData();
}
public void addNodeClinicalData(OdmClinicalDataBean clinicaldata) {
ClinicalDataReportBean data = new ClinicalDataReportBean(clinicaldata);
data.setODMVersion(this.getODMVersion());
data.setXmlOutput(this.getXmlOutput());
data.addNodeClinicalData(true, true);
}
public LinkedHashMap<String, OdmStudyBean> getOdmStudyMap() {
return odmStudyMap;
}
public void setOdmStudyMap(LinkedHashMap<String, OdmStudyBean> odmStudyMap) {
this.odmStudyMap = odmStudyMap;
}
public LinkedHashMap<String, OdmClinicalDataBean> getClinicalDataMap() {
return clinicalDataMap;
}
public void setClinicalDataMap(LinkedHashMap<String, OdmClinicalDataBean> clinicalDataMap) {
this.clinicalDataMap = clinicalDataMap;
}
public LinkedHashMap<String, OdmAdminDataBean> getAdminDataMap() {
return adminDataMap;
}
public void setAdminDataMap(LinkedHashMap<String, OdmAdminDataBean> adminDataMap) {
this.adminDataMap = adminDataMap;
}
public void setClinicalData(OdmClinicalDataBean clinicaldata) {
this.clinicaldata = clinicaldata;
}
public CoreResources getCoreResources() {
return coreResources;
}
public void setCoreResources(CoreResources coreResources) {
this.coreResources = coreResources;
}
}