/* OpenClinica is distributed under the GNU Lesser General Public License (GNU * LGPL). * * For details see: http://www.openclinica.org/license copyright 2003-2010 Akaza * Research * */ package org.akaza.openclinica.bean.extract.odm; import org.akaza.openclinica.bean.managestudy.StudyBean; import org.akaza.openclinica.bean.odmbeans.BasicDefinitionsBean; import org.akaza.openclinica.bean.odmbeans.CodeListBean; import org.akaza.openclinica.bean.odmbeans.CodeListItemBean; import org.akaza.openclinica.bean.odmbeans.ElementRefBean; import org.akaza.openclinica.bean.odmbeans.EventDefinitionDetailsBean; import org.akaza.openclinica.bean.odmbeans.FormDefBean; import org.akaza.openclinica.bean.odmbeans.FormDetailsBean; import org.akaza.openclinica.bean.odmbeans.GlobalVariablesBean; import org.akaza.openclinica.bean.odmbeans.ItemDefBean; import org.akaza.openclinica.bean.odmbeans.ItemDetailsBean; import org.akaza.openclinica.bean.odmbeans.ItemGroupDefBean; import org.akaza.openclinica.bean.odmbeans.ItemGroupDetailsBean; import org.akaza.openclinica.bean.odmbeans.ItemGroupRepeatBean; import org.akaza.openclinica.bean.odmbeans.ItemPresentInFormBean; import org.akaza.openclinica.bean.odmbeans.ItemResponseBean; import org.akaza.openclinica.bean.odmbeans.MeasurementUnitBean; import org.akaza.openclinica.bean.odmbeans.MetaDataVersionBean; import org.akaza.openclinica.bean.odmbeans.MultiSelectListBean; import org.akaza.openclinica.bean.odmbeans.MultiSelectListItemBean; import org.akaza.openclinica.bean.odmbeans.OdmStudyBean; import org.akaza.openclinica.bean.odmbeans.PresentInEventDefinitionBean; import org.akaza.openclinica.bean.odmbeans.PresentInFormBean; import org.akaza.openclinica.bean.odmbeans.RangeCheckBean; import org.akaza.openclinica.bean.odmbeans.SectionDetails; import org.akaza.openclinica.bean.odmbeans.SimpleConditionalDisplayBean; import org.akaza.openclinica.bean.odmbeans.StudyEventDefBean; import org.akaza.openclinica.bean.odmbeans.StudyGroupClassListBean; import org.akaza.openclinica.bean.odmbeans.StudyGroupItemBean; import org.akaza.openclinica.bean.odmbeans.SymbolBean; import org.akaza.openclinica.bean.odmbeans.TranslatedTextBean; import org.akaza.openclinica.bean.service.StudyParameterConfig; import org.akaza.openclinica.dao.core.CoreResources; import org.akaza.openclinica.domain.rule.RulesPostImportContainer; import org.akaza.openclinica.exception.OpenClinicaSystemException; import org.akaza.openclinica.logic.odmExport.MetadataUnit; import org.apache.commons.lang.StringEscapeUtils; import org.castor.xml.XMLConfiguration; import org.exolab.castor.mapping.Mapping; import org.exolab.castor.mapping.MappingException; import org.exolab.castor.xml.MarshalException; import org.exolab.castor.xml.Marshaller; import org.exolab.castor.xml.ValidationException; import org.exolab.castor.xml.XMLContext; import java.io.FileNotFoundException; import java.io.IOException; import java.io.StringWriter; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedHashMap; /** * Create ODM XML Study Element for a study. * * @author ywang (May, 2008) */ public class MetaDataReportBean extends OdmXmlReportBean { private OdmStudyBean odmstudy; private LinkedHashMap<String, OdmStudyBean> odmStudyMap; private CoreResources coreResources; public MetaDataReportBean(OdmStudyBean odmstudy) { super(); this.odmstudy = odmstudy; } public MetaDataReportBean(OdmStudyBean odmstudy, CoreResources coreResources) { super(); this.odmstudy = odmstudy; this.coreResources = coreResources; } public MetaDataReportBean(LinkedHashMap<String, OdmStudyBean> odmStudyMap, CoreResources coreResources) { super(); this.odmStudyMap = odmStudyMap; this.coreResources = coreResources; } public MetaDataReportBean() { // TODO Auto-generated constructor stub } private static String nls = System.getProperty("line.separator"); /** * has not been implemented yet */ @Override public void createOdmXml(boolean isDataset) { // this.addHeading(); // this.addRootStartLine(); // addNodeStudy(); // this.addRootEndLine(); } public void createChunkedOdmXml(boolean isDataset) { this.addHeading(); this.addRootStartLine(); Iterator<OdmStudyBean> itm = this.odmStudyMap.values().iterator(); while (itm.hasNext()) { OdmStudyBean s = itm.next(); odmstudy = s; this.addNodeStudy(isDataset); } } public void addNodeStudy(boolean isDataset) { StringBuffer xml = this.getXmlOutput(); String indent = this.getIndent(); xml.append(indent + "<Study OID=\"" + StringEscapeUtils.escapeXml(odmstudy.getOid()) + "\">"); xml.append(nls); addStudyGlobalVariables(); addBasicDefinitions(); addStudyMetaDataVersion(isDataset); xml.append(indent + "</Study>"); xml.append(nls); } private String handleLoadCastor(RulesPostImportContainer rpic) { try { // Create Mapping Mapping mapping = new Mapping(); mapping.loadMapping(getCoreResources().getURL("mappingMarshallerMetadata.xml")); // Create XMLContext XMLContext xmlContext = new XMLContext(); xmlContext.setProperty(XMLConfiguration.NAMESPACES, "true"); xmlContext.addMapping(mapping); StringWriter writer = new StringWriter(); Marshaller marshaller = xmlContext.createMarshaller(); // marshaller.setNamespaceMapping("castor", "http://castor.org/sample/mapping/"); marshaller.setWriter(writer); marshaller.marshal(rpic); String result = writer.toString(); String newResult = result.replace("<?xml version=\"1.0\" encoding=\"UTF-8\"?>", ""); return newResult; } catch (FileNotFoundException ex) { throw new OpenClinicaSystemException(ex.getMessage(), ex.getCause()); } catch (IOException ex) { throw new OpenClinicaSystemException(ex.getMessage(), ex.getCause()); } catch (MarshalException e) { throw new OpenClinicaSystemException(e.getMessage(), e.getCause()); } catch (ValidationException e) { throw new OpenClinicaSystemException(e.getMessage(), e.getCause()); } catch (MappingException e) { throw new OpenClinicaSystemException(e.getMessage(), e.getCause()); } catch (Exception e) { throw new OpenClinicaSystemException(e.getMessage(), e.getCause()); } } public void addNodeRulesData(MetaDataVersionBean a) { RulesPostImportContainer rpic = new RulesPostImportContainer(); rpic.populate(a.getRuleSetRules()); if (rpic.getRuleSets() != null && rpic.getRuleSets().size() > 0) { StringBuffer xml = this.getXmlOutput(); xml.append(handleLoadCastor(rpic)); } } public void addStudyGlobalVariables() { StringBuffer xml = this.getXmlOutput(); String indent = this.getIndent(); String currentIndent = indent + indent; GlobalVariablesBean gv = odmstudy.getGlobalVariables(); xml.append(currentIndent + "<GlobalVariables>"); xml.append(nls); xml.append(currentIndent + indent + "<StudyName>" + StringEscapeUtils.escapeXml(gv.getStudyName()) + "</StudyName>"); xml.append(nls); xml.append(currentIndent + indent + "<StudyDescription>"); xml.append(nls); xml.append(currentIndent + indent + indent + StringEscapeUtils.escapeXml(gv.getStudyDescription())); xml.append(nls); xml.append(currentIndent + indent + "</StudyDescription>"); xml.append(nls); xml.append(currentIndent + indent + "<ProtocolName>" + StringEscapeUtils.escapeXml(gv.getProtocolName()) + "</ProtocolName>"); xml.append(nls); xml.append(currentIndent + "</GlobalVariables>"); xml.append(nls); } public void addBasicDefinitions() { BasicDefinitionsBean bd = odmstudy.getBasicDefinitions(); addMeasurementUnits(bd); } public void addMeasurementUnits(BasicDefinitionsBean bd) { ArrayList<MeasurementUnitBean> units = bd.getMeasurementUnits(); if (units.size() > 0) { StringBuffer xml = this.getXmlOutput(); String indent = this.getIndent(); String currentIndent = indent + indent; xml.append(currentIndent + "<BasicDefinitions>"); xml.append(nls); for (MeasurementUnitBean unit : units) { xml.append(currentIndent + indent + "<MeasurementUnit OID=\"" + StringEscapeUtils.escapeXml(unit.getOid()) + "\" Name=\"" + StringEscapeUtils.escapeXml(unit.getName()) + "\">"); xml.append(nls); addSymbol(unit, currentIndent + indent + indent); xml.append(currentIndent + indent + "</MeasurementUnit>"); xml.append(nls); } xml.append(currentIndent + "</BasicDefinitions>"); xml.append(nls); } } public void addSymbol(MeasurementUnitBean unit, String currentIndent) { SymbolBean symbol = unit.getSymbol(); StringBuffer xml = this.getXmlOutput(); String indent = this.getIndent(); ArrayList<TranslatedTextBean> texts = symbol.getTranslatedText(); xml.append(currentIndent + "<Symbol>"); xml.append(nls); for (TranslatedTextBean text : symbol.getTranslatedText()) { xml.append(currentIndent + indent + "<TranslatedText>" + StringEscapeUtils.escapeXml(text.getText()) + "</TranslatedText>"); xml.append(nls); } xml.append(currentIndent + "</Symbol>"); xml.append(nls); } public void addStudyMetaDataVersion(boolean isDataset) { StringBuffer xml = this.getXmlOutput(); String indent = this.getIndent(); String currentIndent = indent + indent; String ODMVersion = this.getODMVersion(); MetaDataVersionBean meta = odmstudy.getMetaDataVersion(); xml.append(currentIndent + "<MetaDataVersion OID=\"" + StringEscapeUtils.escapeXml(meta.getOid()) + "\" Name=\"" + StringEscapeUtils.escapeXml(meta.getName()) + "\">"); xml.append(nls); if (meta.getInclude() != null) { String pmOid = meta.getInclude().getMetaDataVersionOID(); if (pmOid != null && pmOid.length() > 0) { xml.append(currentIndent + indent); String psOid = meta.getInclude().getStudyOID(); if (psOid != null && psOid.length() > 0) { xml.append("<Include StudyOID =\"" + StringEscapeUtils.escapeXml(psOid) + "\""); } else { xml.append("<Include StudyOID =\"" + StringEscapeUtils.escapeXml(odmstudy.getOid()) + "\""); } xml.append(" MetaDataVersionOID=\"" + StringEscapeUtils.escapeXml(pmOid) + "\"/>"); xml.append(nls); } } // addProtocol(currentIndent + indent); boolean isStudy = meta.getStudy().getParentStudyId() > 0 ? false : true; if (meta.getStudyEventDefs().size() > 0) { addStudyEventDef(isStudy, currentIndent + indent); if (meta.getItemGroupDefs().size() > 0) { addFormDef(isStudy, currentIndent + indent); addItemGroupDef(isStudy, currentIndent + indent); addItemDef(isStudy, currentIndent + indent); addCodeList(currentIndent + indent); if ("oc1.2".equalsIgnoreCase(ODMVersion)) { addMultiSelectList(currentIndent + indent); addStudyGroupClassList(currentIndent + indent); } else if ("oc1.3".equalsIgnoreCase(ODMVersion)) { addMultiSelectList(currentIndent + indent); addStudyGroupClassList(currentIndent + indent); if (meta.getStudy().getParentStudyId() > 0) { this.addStudyDetails(currentIndent + indent); } else { this.addStudyDetails(currentIndent + indent); } } } } else if(odmstudy.getOid().equals(MetadataUnit.FAKE_STUDY_OID)){ addFormDef(isStudy, currentIndent + indent); addItemGroupDef(isStudy, currentIndent + indent); addItemDef(isStudy, currentIndent + indent); } addNodeRulesData(meta); xml.append(currentIndent + "</MetaDataVersion>"); xml.append(nls); } public void addProtocol(String currentIndent) { // The protocol lists the kinds of study events that can occur within a // specific version of a Study. StringBuffer xml = this.getXmlOutput(); String indent = this.getIndent(); xml.append(currentIndent + "<Protocol>"); xml.append(nls); for (ElementRefBean seref : odmstudy.getMetaDataVersion().getProtocol().getStudyEventRefs()) { // At this point, Mandatory has been set yes xml.append(currentIndent + indent + "<StudyEventRef StudyEventOID=\"" + StringEscapeUtils.escapeXml(seref.getElementDefOID()) + "\" OrderNumber=\"" + seref.getOrderNumber() + "\" Mandatory=\"Yes\"/>"); xml.append(nls); } xml.append(currentIndent + "</Protocol>"); xml.append(nls); } public void addStudyEventDef(boolean isStudy, String currentIndent) { StringBuffer xml = this.getXmlOutput(); String indent = this.getIndent(); ArrayList<StudyEventDefBean> seds = (ArrayList<StudyEventDefBean>) odmstudy.getMetaDataVersion().getStudyEventDefs(); for (StudyEventDefBean sed : seds) { xml.append(currentIndent + "<StudyEventDef OID=\"" + StringEscapeUtils.escapeXml(sed.getOid()) + "\" Name=\"" + StringEscapeUtils.escapeXml(sed.getName()) + "\" Repeating=\"" + sed.getRepeating() + "\" Type=\"" + sed.getType() + "\">"); xml.append(nls); ArrayList<ElementRefBean> forms = (ArrayList<ElementRefBean>) sed.getFormRefs(); for (ElementRefBean form : forms) { xml.append(currentIndent + indent + "<FormRef FormOID=\"" + StringEscapeUtils.escapeXml(form.getElementDefOID()) + "\" Mandatory=\"" + form.getMandatory() + "\"/>"); xml.append(nls); } // add EventDefinitionDetails for oc1.3 //MR=416 if ("oc1.3".equals(this.getODMVersion()) ) { this.addEventDefinitionDetails(sed.getEventDefinitionDetais(), currentIndent + indent); } xml.append(currentIndent + "</StudyEventDef>"); xml.append(nls); } } public void addFormDef(boolean isStudy, String currentIndent) { StringBuffer xml = this.getXmlOutput(); String indent = this.getIndent(); ArrayList<FormDefBean> forms = (ArrayList<FormDefBean>) odmstudy.getMetaDataVersion().getFormDefs(); for (FormDefBean form : forms) { xml.append(currentIndent + "<FormDef OID=\"" + StringEscapeUtils.escapeXml(form.getOid()) + "\" Name=\"" + StringEscapeUtils.escapeXml(form.getName()) + "\" Repeating=\"" + form.getRepeating() + "\">"); xml.append(nls); ArrayList<ElementRefBean> igs = (ArrayList<ElementRefBean>) form.getItemGroupRefs(); for (ElementRefBean ig : igs) { xml.append(currentIndent + indent + "<ItemGroupRef ItemGroupOID=\"" + StringEscapeUtils.escapeXml(ig.getElementDefOID()) + "\" Mandatory=\"" + ig.getMandatory() + "\"/>"); xml.append(nls); } // add FormDetails for oc1.3 if ("oc1.3".equals(this.getODMVersion())) { this.addFormDetails(form.getFormDetails(), currentIndent + indent); } xml.append(currentIndent + "</FormDef>"); xml.append(nls); } } /** * The form specific formdef tag * @param isStudy * @param currentIndent * @param formOID */ public void addFormDef(boolean isStudy, String currentIndent,String formOID) { StringBuffer xml = this.getXmlOutput(); String indent = this.getIndent(); ArrayList<FormDefBean> forms = (ArrayList<FormDefBean>) odmstudy.getMetaDataVersion().getFormDefs(); for (FormDefBean form : forms) { xml.append(currentIndent + "<FormDef OID=\"" + StringEscapeUtils.escapeXml(form.getOid()) + "\" Name=\"" + StringEscapeUtils.escapeXml(form.getName()) + "\" Repeating=\"" + form.getRepeating() + "\">"); xml.append(nls); ArrayList<ElementRefBean> igs = (ArrayList<ElementRefBean>) form.getItemGroupRefs(); for (ElementRefBean ig : igs) { xml.append(currentIndent + indent + "<ItemGroupRef ItemGroupOID=\"" + StringEscapeUtils.escapeXml(ig.getElementDefOID()) + "\" Mandatory=\"" + ig.getMandatory() + "\"/>"); xml.append(nls); } // add FormDetails for oc1.3 if ("oc1.3".equals(this.getODMVersion()) && isStudy) { this.addFormDetails(form.getFormDetails(), currentIndent + indent); } xml.append(currentIndent + "</FormDef>"); xml.append(nls); } } public void addItemGroupDef(boolean isStudy, String currentIndent) { StringBuffer xml = this.getXmlOutput(); String indent = this.getIndent(); ArrayList<ItemGroupDefBean> igs = (ArrayList<ItemGroupDefBean>) odmstudy.getMetaDataVersion().getItemGroupDefs(); for (ItemGroupDefBean ig : igs) { if (ig.getComment().length() > 0) { xml.append(currentIndent + "<ItemGroupDef OID=\"" + StringEscapeUtils.escapeXml(ig.getOid()) + "\" Name=\"" + StringEscapeUtils.escapeXml(ig.getName()) + "\" Repeating=\"" + ig.getRepeating() + "\" SASDatasetName=\"" + this.getSasNameValidator().getValidName(ig.getPreSASDatasetName()) + "\" Comment=\"" + StringEscapeUtils.escapeXml(ig.getComment()) + "\">"); } else { xml.append(currentIndent + "<ItemGroupDef OID=\"" + StringEscapeUtils.escapeXml(ig.getOid()) + "\" Name=\"" + StringEscapeUtils.escapeXml(ig.getName()) + "\" Repeating=\"" + ig.getRepeating() + "\" SASDatasetName=\"" + this.getSasNameValidator().getValidName(ig.getPreSASDatasetName()) + "\">"); } xml.append(nls); ArrayList<ElementRefBean> items = (ArrayList<ElementRefBean>) ig.getItemRefs(); for (ElementRefBean item : items) { xml.append(currentIndent + indent + "<ItemRef ItemOID=\"" + StringEscapeUtils.escapeXml(item.getElementDefOID()) + "\" OrderNumber=\"" + item.getOrderNumber() + "\" Mandatory=\"" + item.getMandatory() + "\"/>"); xml.append(nls); } // add ItemGroupDetails for oc1.3 if ("oc1.3".equals(this.getODMVersion()) ) { this.addItemGroupDetails(ig.getItemGroupDetails(), currentIndent + indent); } xml.append(currentIndent + "</ItemGroupDef>"); xml.append(nls); } } public void addItemDef(boolean isStudy, String currentIndent) { StringBuffer xml = this.getXmlOutput(); String indent = this.getIndent(); ArrayList<ItemDefBean> items = (ArrayList<ItemDefBean>) odmstudy.getMetaDataVersion().getItemDefs(); String ODMVersion = this.getODMVersion(); for (ItemDefBean item : items) { xml.append(currentIndent + "<ItemDef OID=\"" + StringEscapeUtils.escapeXml(item.getOid()) + "\" Name=\"" + StringEscapeUtils.escapeXml(item.getName()) + "\" DataType=\"" + item.getDateType() + "\""); int len = item.getLength(); if (len > 0) { xml.append(" Length=\"" + len + "\""); } len = item.getSignificantDigits(); if (len > 0) { xml.append(" SignificantDigits=\"" + len + "\""); } xml.append(" SASFieldName=\"" + this.getSasNameValidator().getValidName(item.getPreSASFieldName()) + "\""); if (item.getComment().length() > 0) { xml.append(" Comment=\"" + StringEscapeUtils.escapeXml(item.getComment()) + "\""); } if ("oc1.2".equalsIgnoreCase(ODMVersion) || "oc1.3".equalsIgnoreCase(ODMVersion)) { xml.append(" OpenClinica:FormOIDs=\"" + item.getFormOIDs() + "\""); } boolean hasNode = false; // add question TranslatedTextBean t = item.getQuestion().getQuestion(); if (t != null && t.getText() != null && t.getText().length() > 0) { if (!hasNode) { hasNode = true; xml.append(">"); xml.append(nls); } if ("oc1.3".equalsIgnoreCase(ODMVersion)) { String qn = item.getQuestion().getQuestionNumber(); if (qn != null && qn.length() > 0) { xml.append(currentIndent + indent + "<Question OpenClinica:QuestionNumber=\"" + item.getQuestion().getQuestionNumber() + "\">"); } else { xml.append(currentIndent + indent + "<Question>"); } } else { xml.append(currentIndent + indent + "<Question>"); } xml.append(nls); xml.append(currentIndent + indent + indent + "<TranslatedText>"); xml.append(nls); xml.append(currentIndent + indent + indent + StringEscapeUtils.escapeXml(t.getText())); xml.append(nls); xml.append(currentIndent + indent + indent + "</TranslatedText>"); xml.append(nls); xml.append(currentIndent + indent + "</Question>"); xml.append(nls); } // add MeasurementUnitRef String muRefOid = item.getMeasurementUnitRef().getElementDefOID(); if (muRefOid != null && muRefOid.length() > 0) { if (!hasNode) { hasNode = true; xml.append(">"); xml.append(nls); } xml.append(currentIndent + indent + this.measurementUnitRefString(muRefOid)); xml.append(nls); } // add RangeCheck if (item.getRangeCheck() != null) { ArrayList<RangeCheckBean> rcs = (ArrayList<RangeCheckBean>) item.getRangeCheck(); for (RangeCheckBean rc : rcs) { if (rc.getComparator().length() > 0) { if (!hasNode) { hasNode = true; xml.append(">"); xml.append(nls); } xml.append(currentIndent + indent + "<RangeCheck Comparator=\"" + StringEscapeUtils.escapeXml(rc.getComparator()) + "\" SoftHard=\"" + rc.getSoftHard() + "\">"); xml.append(nls); xml.append(currentIndent + indent + indent + "<CheckValue>" + StringEscapeUtils.escapeXml(rc.getCheckValue()) + "</CheckValue>"); xml.append(nls); // at this time, only one measurementUnit has been // supported if (muRefOid != null && muRefOid.length() > 0) { xml.append(currentIndent + indent + indent + this.measurementUnitRefString(muRefOid)); xml.append(nls); } xml.append(currentIndent + indent + indent + "<ErrorMessage><TranslatedText>" + StringEscapeUtils.escapeXml(rc.getErrorMessage().getText()) + "</TranslatedText></ErrorMessage>"); xml.append(nls); xml.append(currentIndent + indent + "</RangeCheck>"); xml.append(nls); } } } // add CodeListRef String clOid = item.getCodeListOID(); if (clOid != null && clOid.length() > 0) { if (!hasNode) { hasNode = true; xml.append(">"); xml.append(nls); } xml.append(currentIndent + indent + "<CodeListRef CodeListOID=\"" + StringEscapeUtils.escapeXml(clOid) + "\"/>"); xml.append(nls); } // add MultiSelectListRef if ("oc1.2".equalsIgnoreCase(ODMVersion) || "oc1.3".equalsIgnoreCase(ODMVersion)) { if (item.getMultiSelectListRef() != null) { String mslOid = item.getMultiSelectListRef().getElementDefOID(); if (mslOid != null && mslOid.length() > 0) { if (!hasNode) { hasNode = true; xml.append(">"); xml.append(nls); } // xml.append(currentIndent + indent + // "<OpenClinica:MultiSelectListRef OpenClinica:MultiSelectListID=\"" xml.append(currentIndent + indent + "<OpenClinica:MultiSelectListRef MultiSelectListID=\"" + StringEscapeUtils.escapeXml(mslOid) + "\"/>"); xml.append(nls); } } } // add ItemDetails for oc1.3 if ("oc1.3".equals(ODMVersion)) { if (!hasNode) { hasNode = true; xml.append(">"); xml.append(nls); } this.addItemDetails(item.getItemDetails(), currentIndent + indent); } if (hasNode) { xml.append(currentIndent + "</ItemDef>"); xml.append(nls); hasNode = false; } else { xml.append("/>"); xml.append(nls); } } } public void addCodeList(String currentIndent) { StringBuffer xml = this.getXmlOutput(); String indent = this.getIndent(); if (odmstudy.getMetaDataVersion().getCodeLists() != null) { ArrayList<CodeListBean> cls = (ArrayList<CodeListBean>) odmstudy.getMetaDataVersion().getCodeLists(); if (cls.size() > 0) { for (CodeListBean cl : cls) { boolean isString = cl.getDataType().equalsIgnoreCase("text") ? true : false; xml.append(currentIndent + "<CodeList OID=\"" + StringEscapeUtils.escapeXml(cl.getOid()) + "\" Name=\"" + StringEscapeUtils.escapeXml(cl.getName()) + "\" DataType=\"" + cl.getDataType() + "\" SASFormatName=\"" + this.getSasFormValidator().getValidSASFormatName(cl.getName(), isString) + "\">"); xml.append(nls); ArrayList<CodeListItemBean> clis = (ArrayList<CodeListItemBean>) cl.getCodeListItems(); if (clis != null && clis.size() > 0) { for (CodeListItemBean cli : clis) { xml.append(currentIndent + indent + "<CodeListItem CodedValue=\"" + StringEscapeUtils.escapeXml(cli.getCodedVale()) + "\">"); xml.append(nls); xml.append(currentIndent + indent + indent + "<Decode>"); xml.append(nls); TranslatedTextBean tt = cli.getDecode(); if (tt.getXmlLang().length() > 0) { xml.append(currentIndent + indent + indent + indent + "<TranslatedText xml:lang=\"" + tt.getXmlLang() + "\">" + StringEscapeUtils.escapeXml(cli.getDecode().getText()) + "</TranslatedText>"); } else { xml.append(currentIndent + indent + indent + indent + "<TranslatedText>" + StringEscapeUtils.escapeXml(cli.getDecode().getText()) + "</TranslatedText>"); } xml.append(nls); xml.append(currentIndent + indent + indent + "</Decode>"); xml.append(nls); xml.append(currentIndent + indent + "</CodeListItem>"); xml.append(nls); } } xml.append(currentIndent + "</CodeList>"); xml.append(nls); } } } } public void addMultiSelectList(String currentIndent) { StringBuffer xml = this.getXmlOutput(); String indent = this.getIndent(); ArrayList<MultiSelectListBean> lists = (ArrayList<MultiSelectListBean>) odmstudy.getMetaDataVersion().getMultiSelectLists(); if (lists != null) { if (lists.size() > 0) { for (MultiSelectListBean l : lists) { xml.append(currentIndent + "<OpenClinica:MultiSelectList ID=\"" + StringEscapeUtils.escapeXml(l.getOid()) + "\" "); if (l.getName() != null) { xml.append("Name=\"" + StringEscapeUtils.escapeXml(l.getName()) + "\" "); } if (l.getDataType() != null) { xml.append("DataType=\"" + l.getDataType() + "\" "); } if (l.getActualDataType() != null) { xml.append("ActualDataType=\"" + StringEscapeUtils.escapeXml(l.getActualDataType()) + "\" "); } xml.append(">"); xml.append(nls); ArrayList<MultiSelectListItemBean> mslis = (ArrayList<MultiSelectListItemBean>) l.getMultiSelectListItems(); if (mslis != null && mslis.size() > 0) { for (MultiSelectListItemBean msli : mslis) { xml.append(currentIndent + indent + "<OpenClinica:MultiSelectListItem CodedOptionValue=\"" + StringEscapeUtils.escapeXml(msli.getCodedOptionValue()) + "\">"); xml.append(nls); xml.append(currentIndent + indent + indent + "<Decode>"); xml.append(nls); TranslatedTextBean tt = msli.getDecode(); if (tt.getXmlLang().length() > 0) { xml.append(currentIndent + indent + indent + indent + "<TranslatedText xml:lang=\"" + tt.getXmlLang() + "\">" + StringEscapeUtils.escapeXml(msli.getDecode().getText()) + "</TranslatedText>"); } else { xml.append(currentIndent + indent + indent + indent + "<TranslatedText>" + StringEscapeUtils.escapeXml(msli.getDecode().getText()) + "</TranslatedText>"); } xml.append(nls); xml.append(currentIndent + indent + indent + "</Decode>"); xml.append(nls); xml.append(currentIndent + indent + "</OpenClinica:MultiSelectListItem>"); xml.append(nls); } } xml.append(currentIndent + "</OpenClinica:MultiSelectList>"); xml.append(nls); } } } } public void addStudyDetails(String currentIndent) { StringBuffer xml = this.getXmlOutput(); String indent = this.getIndent(); StudyBean study = odmstudy.getMetaDataVersion().getStudy(); String temp = ""; if (study.getId() > 0) { xml.append(currentIndent + "<OpenClinica:StudyDetails StudyOID=\"" + StringEscapeUtils.escapeXml(study.getOid())+ "\"" ); if(study.getParentStudyId()>0){ temp = study.getName(); if(temp!=null && temp.length()>0){ xml.append(" SiteName=\""+ StringEscapeUtils.escapeXml(temp) + "\""); } temp = study.getParentStudyName(); if(temp!=null && temp.length()>0){ xml.append(" ParentStudyName=\""+ StringEscapeUtils.escapeXml(temp) + "\""); } // } xml.append(">"); xml.append(nls); xml.append(currentIndent + indent + "<OpenClinica:StudyDescriptionAndStatus"); temp = study.getOfficialTitle(); if (temp != null && temp.length() > 0) { xml.append(" OfficialTitle=\"" + StringEscapeUtils.escapeXml(temp) + "\""); } temp = study.getSecondaryIdentifier(); if (temp != null && temp.length() > 0) { xml.append(" SecondaryIDs=\"" + StringEscapeUtils.escapeXml(temp) + "\""); } xml.append(" DateCreated=\"" + new SimpleDateFormat("yyyy-MM-dd").format(study.getCreatedDate()) + "\""); if(study.getDatePlannedStart() instanceof java.util.Date) { xml.append(" StartDate=\"" + new SimpleDateFormat("yyyy-MM-dd").format(study.getDatePlannedStart()) + "\""); } if (study.getDatePlannedEnd() != null) { xml.append(" StudyCompletionDate=\"" + new SimpleDateFormat("yyyy-MM-dd").format(study.getDatePlannedEnd()) + "\""); } xml.append(">"); xml.append(nls); temp = study.getStatus() == null ? "" : study.getStatus().getName(); if (temp != null && temp.length() > 0) { xml.append(currentIndent + indent + indent + "<OpenClinica:StudySytemStatus>" + StringEscapeUtils.escapeXml(temp) + "</OpenClinica:StudySytemStatus>"); xml.append(nls); } xml.append(currentIndent + indent + indent + "<OpenClinica:PrincipalInvestigator>" + StringEscapeUtils.escapeXml(study.getPrincipalInvestigator()) + "</OpenClinica:PrincipalInvestigator>"); xml.append(nls); temp = study.getProtocolDescription(); if (temp != null && temp.length() > 0) { xml.append(currentIndent + indent + indent + "<OpenClinica:DetailedDescription>" + StringEscapeUtils.escapeXml(temp) + "</OpenClinica:DetailedDescription>"); xml.append(nls); } xml.append(currentIndent + indent + indent + "<OpenClinica:Sponsor>" + StringEscapeUtils.escapeXml(study.getSponsor()) + "</OpenClinica:Sponsor>"); xml.append(nls); temp = study.getCollaborators(); if (temp != null && temp.length() > 0) { xml.append(currentIndent + indent + indent + "<OpenClinica:Collaborators>" + StringEscapeUtils.escapeXml(temp) + "</OpenClinica:Collaborators>"); xml.append(nls); } xml.append(currentIndent + indent + indent + "<OpenClinica:StudyPhase>" + StringEscapeUtils.escapeXml(study.getPhase()) + "</OpenClinica:StudyPhase>"); xml.append(nls); temp = study.getProtocolType(); if (temp != null && temp.length() > 0) { xml.append(currentIndent + indent + indent + "<OpenClinica:ProtocolType>" + StringEscapeUtils.escapeXml(temp) + "</OpenClinica:ProtocolType>"); xml.append(nls); } if (study.getProtocolDateVerification() != null) { xml.append(currentIndent + indent + indent + "<OpenClinica:ProtocolVerificationDate>" + new SimpleDateFormat("yyyy-MM-dd").format(study.getProtocolDateVerification()) + "</OpenClinica:ProtocolVerificationDate>"); xml.append(nls); } xml.append(currentIndent + indent + indent + "<OpenClinica:Purpose>" + StringEscapeUtils.escapeXml(study.getPurpose()) + "</OpenClinica:Purpose>"); xml.append(nls); temp = study.getDuration(); if (temp != null && temp.length() > 0) { xml.append(currentIndent + indent + indent + "<OpenClinica:Duration>" + StringEscapeUtils.escapeXml(temp) + "</OpenClinica:Duration>"); xml.append(nls); } temp = study.getSelection(); if (temp != null && temp.length() > 0) { xml.append(currentIndent + indent + indent + "<OpenClinica:Selection>" + StringEscapeUtils.escapeXml(temp) + "</OpenClinica:Selection>"); xml.append(nls); } temp = study.getTiming(); if (temp != null && temp.length() > 0) { xml.append(currentIndent + indent + indent + "<OpenClinica:Timing>" + StringEscapeUtils.escapeXml(temp) + "</OpenClinica:Timing>"); xml.append(nls); } temp = study.getAllocation(); if (temp != null && temp.length() > 0) { xml.append(currentIndent + indent + indent + "<OpenClinica:Allocation>" + StringEscapeUtils.escapeXml(temp) + "</OpenClinica:Allocation>"); xml.append(nls); } temp = study.getMasking(); if (temp != null && temp.length() > 0) { xml.append(currentIndent + indent + indent + "<OpenClinica:Masking>" + StringEscapeUtils.escapeXml(temp) + "</OpenClinica:Masking>"); xml.append(nls); } temp = study.getControl(); if (temp != null && temp.length() > 0) { xml.append(currentIndent + indent + indent + "<OpenClinica:Control>" + StringEscapeUtils.escapeXml(temp) + "</OpenClinica:Control>"); xml.append(nls); } temp = study.getAssignment(); if (temp != null && temp.length() > 0) { xml.append(currentIndent + indent + indent + "<OpenClinica:InterventionModel>" + StringEscapeUtils.escapeXml(temp) + "</OpenClinica:InterventionModel>"); xml.append(nls); } temp = study.getEndpoint(); if (temp != null && temp.length() > 0) { xml.append(currentIndent + indent + indent + "<OpenClinica:StudyClassification>" + StringEscapeUtils.escapeXml(temp) + "</OpenClinica:StudyClassification>"); xml.append(nls); } xml.append(currentIndent + indent + "</OpenClinica:StudyDescriptionAndStatus>"); xml.append(nls); xml.append(currentIndent + indent + "<OpenClinica:ConditionsAndEligibility>"); xml.append(nls); temp = study.getConditions(); if (temp != null && temp.length() > 0) { xml.append(currentIndent + indent + indent + "<OpenClinica:Conditions>" + StringEscapeUtils.escapeXml(temp) + "</OpenClinica:Conditions>"); xml.append(nls); } temp = study.getKeywords(); if (temp != null && temp.length() > 0) { xml.append(currentIndent + indent + indent + "<OpenClinica:Keywords>" + StringEscapeUtils.escapeXml(temp) + "</OpenClinica:Keywords>"); xml.append(nls); } temp = study.getEligibility(); if (temp != null && temp.length() > 0) { xml.append(currentIndent + indent + indent + "<OpenClinica:EligibilityCriteria>" + StringEscapeUtils.escapeXml(temp) + "</OpenClinica:EligibilityCriteria>"); xml.append(nls); } temp = study.getGender(); if (temp != null && temp.length() > 0) { xml.append(currentIndent + indent + indent + "<OpenClinica:Sex>" + temp + "</OpenClinica:Sex>"); xml.append(nls); } temp = study.getAgeMin(); String temp2 = study.getAgeMax(); if (temp != null && temp.length() > 0) { xml.append(currentIndent + indent + indent + "<OpenClinica:Age MinimumAge=\"" + temp + "\""); if (temp2 != null && temp2.length() > 0) { xml.append(" MaximumAge=\"" + temp2 + "\""); } xml.append("/>"); xml.append(nls); } else if (temp2 != null && temp2.length() > 0) { xml.append(currentIndent + indent + indent + "<OpenClinica:Age MaximumAge=\"" + temp2 + "\""); xml.append("/>"); xml.append(nls); } xml.append(currentIndent + indent + indent + "<OpenClinica:HealthyVolunteersAccepted>"); xml.append(study.getHealthyVolunteerAccepted() ? "Yes" : "No"); xml.append("</OpenClinica:HealthyVolunteersAccepted>"); xml.append(nls); if(study.getExpectedTotalEnrollment()>0) { xml.append(currentIndent + indent + indent + "<OpenClinica:ExpectedTotalEnrollment>" + study.getExpectedTotalEnrollment() + "</OpenClinica:ExpectedTotalEnrollment>"); xml.append(nls); } xml.append(currentIndent + indent + "</OpenClinica:ConditionsAndEligibility>"); xml.append(nls); StringBuffer facility = new StringBuffer(); temp = study.getFacilityName(); facility.append(temp != null && temp.length() > 0 ? currentIndent + indent + indent + "<OpenClinica:FacilityName>" + StringEscapeUtils.escapeXml(temp) + "</OpenClinica:FacilityName>" + nls : ""); temp = study.getFacilityCity(); facility.append(temp != null && temp.length() > 0 ? currentIndent + indent + indent + "<OpenClinica:FacilityCity>" + StringEscapeUtils.escapeXml(temp) + "</OpenClinica:FacilityCity>" + nls : ""); temp = study.getFacilityState(); facility.append(temp != null && temp.length() > 0 ? currentIndent + indent + indent + "<OpenClinica:FacilityState>" + StringEscapeUtils.escapeXml(temp) + "</OpenClinica:FacilityState>" + nls : ""); temp = study.getFacilityZip(); facility.append(temp != null && temp.length() > 0 ? currentIndent + indent + indent + "<OpenClinica:PostalCode>" + StringEscapeUtils.escapeXml(temp) + "</OpenClinica:PostalCode>" + nls : ""); temp = study.getFacilityCountry(); facility.append(temp != null && temp.length() > 0 ? currentIndent + indent + indent + "<OpenClinica:FacilityCountry>" + StringEscapeUtils.escapeXml(temp) + "</OpenClinica:FacilityCountry>" + nls : ""); temp = study.getFacilityContactName(); facility.append(temp != null && temp.length() > 0 ? currentIndent + indent + indent + "<OpenClinica:FacilityContactName>" + StringEscapeUtils.escapeXml(temp) + "</OpenClinica:FacilityContactName>" + nls : ""); temp = study.getFacilityContactDegree(); facility.append(temp != null && temp.length() > 0 ? currentIndent + indent + indent + "<OpenClinica:FacilityContactDegree>" + StringEscapeUtils.escapeXml(temp) + "</OpenClinica:FacilityContactDegree>" + nls : ""); temp = study.getFacilityContactPhone(); facility.append(temp != null && temp.length() > 0 ? currentIndent + indent + indent + "<OpenClinica:FacilityContactPhone>" + StringEscapeUtils.escapeXml(temp) + "</OpenClinica:FacilityContactPhone>" + nls : ""); temp = study.getFacilityContactEmail(); facility.append(temp != null && temp.length() > 0 ? currentIndent + indent + indent + "<OpenClinica:FacilityContactEmail>" + StringEscapeUtils.escapeXml(temp) + "</OpenClinica:FacilityContactEmail>" + nls : ""); if (facility.length() > 0) { xml.append(currentIndent + indent + "<OpenClinica:FacilityInformation>"); xml.append(nls); xml.append(facility); xml.append(currentIndent + indent + "</OpenClinica:FacilityInformation>"); xml.append(nls); } facility = new StringBuffer(); temp = study.getMedlineIdentifier(); facility.append(temp != null && temp.length() > 0 ? currentIndent + indent + indent + "<OpenClinica:MEDLINEIdentifier>" + StringEscapeUtils.escapeXml(temp) + "</OpenClinica:MEDLINEIdentifier>" + nls : ""); facility.append(currentIndent + indent + indent + "<OpenClinica:ResultsReference>" + (study.isResultsReference() ? "Yes" : "No") + "</OpenClinica:ResultsReference>" + nls); temp = study.getUrl(); facility.append(temp != null && temp.length() > 0 ? currentIndent + indent + indent + "<OpenClinica:URLReference>" + StringEscapeUtils.escapeXml(temp) + "</OpenClinica:URLReference>" + nls : ""); temp = study.getUrlDescription(); facility.append(temp != null && temp.length() > 0 ? currentIndent + indent + indent + "<OpenClinica:URLDescription>" + StringEscapeUtils.escapeXml(temp) + "</OpenClinica:URLDescription>" + nls : ""); xml.append(currentIndent + indent + "<OpenClinica:RelatedInformation>"); xml.append(nls); xml.append(facility); xml.append(currentIndent + indent + "</OpenClinica:RelatedInformation>"); xml.append(nls); StudyParameterConfig spc = study.getStudyParameterConfig(); xml.append(currentIndent + indent + "<OpenClinica:StudyParameterConfiguration>"); xml.append(nls); xml.append(currentIndent + indent + indent + "<OpenClinica:StudyParameterListRef StudyParameterListID=\"SPL_collectDob\"" + " Value=\"" + spc.getCollectDob() + "\"/>" + nls); xml.append(currentIndent + indent + indent + "<OpenClinica:StudyParameterListRef StudyParameterListID=\"SPL_discrepancyManagement\"" + " Value=\"" + spc.getDiscrepancyManagement() + "\"/>" + nls); xml.append(currentIndent + indent + indent + "<OpenClinica:StudyParameterListRef StudyParameterListID=\"SPL_subjectPersonIdRequired\"" + " Value=\"" + spc.getSubjectPersonIdRequired() + "\"/>" + nls); xml.append(currentIndent + indent + indent + "<OpenClinica:StudyParameterListRef StudyParameterListID=\"SPL_genderRequired\"" + " Value=\"" + spc.getGenderRequired() + "\"/>" + nls); xml.append(currentIndent + indent + indent + "<OpenClinica:StudyParameterListRef StudyParameterListID=\"SPL_subjectIdGeneration\"" + " Value=\"" + spc.getSubjectIdGeneration() + "\"/>" + nls); xml.append(currentIndent + indent + indent + "<OpenClinica:StudyParameterListRef StudyParameterListID=\"SPL_interviewerNameRequired\"" + " Value=\"" + spc.getInterviewerNameRequired() + "\"/>" + nls); xml.append(currentIndent + indent + indent + "<OpenClinica:StudyParameterListRef StudyParameterListID=\"SPL_interviewerNameDefault\"" + " Value=\"" + spc.getInterviewerNameDefault() + "\"/>" + nls); xml.append(currentIndent + indent + indent + "<OpenClinica:StudyParameterListRef StudyParameterListID=\"SPL_interviewerNameEditable\"" + " Value=\"" + spc.getInterviewerNameEditable() + "\"/>" + nls); xml.append(currentIndent + indent + indent + "<OpenClinica:StudyParameterListRef StudyParameterListID=\"SPL_interviewDateRequired\"" + " Value=\"" + spc.getInterviewDateRequired() + "\"/>" + nls); xml.append(currentIndent + indent + indent + "<OpenClinica:StudyParameterListRef StudyParameterListID=\"SPL_interviewDateDefault\"" + " Value=\"" + spc.getInterviewDateDefault() + "\"/>" + nls); xml.append(currentIndent + indent + indent + "<OpenClinica:StudyParameterListRef StudyParameterListID=\"SPL_interviewDateEditable\"" + " Value=\"" + spc.getInterviewDateEditable() + "\"/>" + nls); xml.append(currentIndent + indent + indent + "<OpenClinica:StudyParameterListRef StudyParameterListID=\"SPL_personIdShownOnCRF\"" + " Value=\"" + spc.getPersonIdShownOnCRF() + "\"/>" + nls); xml.append(currentIndent + indent + indent + "<OpenClinica:StudyParameterListRef StudyParameterListID=\"SPL_secondaryLabelViewable\"" + " Value=\"" + spc.getSecondaryLabelViewable() + "\"/>" + nls); xml.append(currentIndent + indent + indent + "<OpenClinica:StudyParameterListRef StudyParameterListID=\"SPL_adminForcedReasonForChange\"" + " Value=\"" + spc.getAdminForcedReasonForChange() + "\"/>" + nls); xml.append(currentIndent + indent + indent + "<OpenClinica:StudyParameterListRef StudyParameterListID=\"SPL_eventLocationRequired\"" + " Value=\"" + spc.getEventLocationRequired() + "\"/>" + nls); addStudyParameterLists(currentIndent + indent + indent); xml.append(currentIndent + indent + "</OpenClinica:StudyParameterConfiguration>"); xml.append(nls); xml.append(currentIndent + "</OpenClinica:StudyDetails>"); xml.append(nls); } } public void addEventDefinitionDetails(EventDefinitionDetailsBean detail, String currentIndent) { StringBuffer xml = this.getXmlOutput(); String indent = this.getIndent(); String temp = detail.getDescription(); String des = temp != null && temp.length() > 0 ? currentIndent + indent + "<OpenClinica:Description>" + StringEscapeUtils.escapeXml(temp) + "</OpenClinica:Description>" + nls : ""; temp = detail.getCategory(); String cat = temp != null && temp.length() > 0 ? currentIndent + indent + "<OpenClinica:Category>" + StringEscapeUtils.escapeXml(temp) + "</OpenClinica:Category>" + nls : ""; if(des.length()>1 || cat.length()>1) { xml.append(currentIndent + "<OpenClinica:EventDefinitionDetails StudyEventOID=\"" + StringEscapeUtils.escapeXml(detail.getOid()) + "\">"); xml.append(nls); xml.append(des); temp = detail.getCategory(); xml.append(cat); xml.append(currentIndent + "</OpenClinica:EventDefinitionDetails>"); xml.append(nls); } } public void addFormDetails(FormDetailsBean detail, String currentIndent) { StringBuffer xml = this.getXmlOutput(); String indent = this.getIndent(); String temp = ""; xml.append(currentIndent + "<OpenClinica:FormDetails FormOID=\"" + StringEscapeUtils.escapeXml(detail.getOid()) + "\" ParentFormOID=\"" + StringEscapeUtils.escapeXml(detail.getParentFormOid())+"\""); xml.append(">"); xml.append(nls); xml.append(currentIndent+ indent+"<OpenClinica:SectionDetails>"); xml.append(nls); ArrayList<SectionDetails> sections = (ArrayList<SectionDetails>) detail.getSectionDetails(); for (SectionDetails ig : sections) { xml.append(currentIndent + indent +indent +"<OpenClinica:Section SectionLabel=\"" +StringEscapeUtils.escapeXml(ig.getSectionLabel()) + "\" SectionTitle=\"" +StringEscapeUtils.escapeXml(ig.getSectionTitle()) + "\" SectionSubtitle=\"" +StringEscapeUtils.escapeXml(ig.getSectionSubtitle()) + "\" SectionInstructions=\"" +StringEscapeUtils.escapeXml(ig.getSectionInstructions()) + "\" SectionPageNumber=\"" +StringEscapeUtils.escapeXml(ig.getSectionPageNumber()) + "\"/>"); xml.append(nls); } xml.append(currentIndent+ indent+"</OpenClinica:SectionDetails>"); xml.append(nls); temp = detail.getVersionDescription(); xml.append(temp != null && temp.length() > 0 ? currentIndent + indent + "<OpenClinica:VersionDescription>" + StringEscapeUtils.escapeXml(temp) + "</OpenClinica:VersionDescription>" + nls : ""); temp = detail.getRevisionNotes(); xml.append(temp != null && temp.length() > 0 ? currentIndent + indent + "<OpenClinica:RevisionNotes>" + StringEscapeUtils.escapeXml(temp) + "</OpenClinica:RevisionNotes>" + nls : ""); // this.addPresentInEventDefinitions(detail, currentIndent+indent); xml.append(currentIndent + "</OpenClinica:FormDetails>"); xml.append(nls); } public void addPresentInEventDefinitions(FormDetailsBean detail, String currentIndent) { StringBuffer xml = this.getXmlOutput(); String temp = ""; ArrayList<PresentInEventDefinitionBean> plist = detail.getPresentInEventDefinitions(); if(plist==null || plist.size()<1) { logger.debug("No presentInEventDefinitions in FormDetails with formOID="+detail.getOid()); } else { for(PresentInEventDefinitionBean p : plist) { xml.append(currentIndent+"<OpenClinica:PresentInEventDefinition StudyEventOID=\""+p.getStudyEventOid()+"\"" +" IsDefaultVersion=\""+p.getIsDefaultVersion()+"\""); temp = p.getNullValues(); xml.append(temp != null && temp.length() > 0 ? " NullValues=\"" + StringEscapeUtils.escapeXml(temp) + "\"" : ""); xml.append(" PasswordRequired=\"" + p.getPasswordRequired() + "\""); temp = p.getDoubleDataEntry(); xml.append((temp != null && temp.length() > 0 ? " DoubleDataEntry=\"" + temp + "\"" : "") + " HideCRF=\"" + p.getHideCrf() + "\""+" ParticipantForm=\"" + p.getParticipantForm() + "\""); xml.append(" AllowAnonymousSubmission=\"" + p.getAllowAnonymousSubmission() + "\""); temp = p.getSubmissionUrl(); xml.append(temp != null && temp.length() > 0 ? " SubmissionUrl=\"" + StringEscapeUtils.escapeXml(temp) + "\"" : ""); xml.append(" Offline=\"" + p.getOffline() + "\""); temp = p.getSourceDataVerification(); xml.append(temp != null && temp.length() > 0 ? " SourceDataVerification=\"" + StringEscapeUtils.escapeXml(temp) + "\"" : ""); xml.append("/>"); xml.append(nls); } } } public void addItemGroupDetails(ItemGroupDetailsBean detail, String currentIndent) { StringBuffer xml = this.getXmlOutput(); String indent = this.getIndent(); String temp = ""; Integer itemp = -1; Integer itemp2 = -1; ArrayList<PresentInFormBean> informs = (ArrayList<PresentInFormBean>) detail.getPresentInForms(); xml.append(currentIndent + "<OpenClinica:ItemGroupDetails ItemGroupOID=\"" + StringEscapeUtils.escapeXml(detail.getOid()) + "\">"); xml.append(nls); for (PresentInFormBean inform : informs) { xml.append(currentIndent + indent + "<OpenClinica:PresentInForm FormOID=\"" + inform.getFormOid() + "\" ShowGroup=\"" + inform.getShowGroup() + "\">"); xml.append(nls); ItemGroupRepeatBean repeat = inform.getItemGroupRepeatBean(); itemp = repeat.getRepeatNumber(); itemp2 = repeat.getRepeatMax(); if (itemp != null && itemp > 0) { xml.append(currentIndent + indent + indent + "<OpenClinica:ItemGroupRepeat RepeatNumber=\"" + itemp); if (itemp2 != null && itemp2 > 0) { xml.append("\" RepeatMax=\"" + itemp2 + "\"/>"); } else { xml.append("\"/>"); } xml.append(nls); } else if (itemp2 != null && itemp2 > 0) { xml.append(currentIndent + indent + indent + "<OpenClinica:ItemGroupRepeat RepeatMax=\"" + itemp2 + "\"/>"); xml.append(nls); } temp = inform.getItemGroupHeader(); xml.append(temp != null && temp.length() > 0 ? currentIndent + indent + indent + "<OpenClinica:ItemGroupHeader>" + StringEscapeUtils.escapeXml(temp) + "</OpenClinica:ItemGroupHeader>" + nls : ""); xml.append(currentIndent + indent + "</OpenClinica:PresentInForm>"); xml.append(nls); } xml.append(currentIndent + "</OpenClinica:ItemGroupDetails>"); xml.append(nls); } public void addItemDetails(ItemDetailsBean detail, String currentIndent) { StringBuffer xml = this.getXmlOutput(); String indent = this.getIndent(); String temp = ""; Integer itemp = -1; ArrayList<ItemPresentInFormBean> informs = (ArrayList<ItemPresentInFormBean>) detail.getItemPresentInForm(); xml.append(currentIndent + "<OpenClinica:ItemDetails ItemOID=\"" + StringEscapeUtils.escapeXml(detail.getOid()) + "\">"); xml.append(nls); for (ItemPresentInFormBean inform : informs) { xml.append(currentIndent + indent + "<OpenClinica:ItemPresentInForm FormOID=\"" + inform.getFormOid() + "\""); temp = inform.getParentItemOid(); xml.append(temp != null && temp.length() > 0 ? " ParentItemOID=\"" + temp + "\"" : ""); itemp = inform.getColumnNumber(); xml.append(itemp != null && itemp > 0 ? " ColumnNumber=\"" + itemp + "\"" : ""); temp = inform.getPageNumber(); xml.append(temp != null && temp.length() > 0 ? " PageNumber=\"" + StringEscapeUtils.escapeXml(temp) + "\"" : ""); temp = inform.getDefaultValue(); xml.append(temp != null && temp.length() > 0 ? " DefaultValue=\"" + StringEscapeUtils.escapeXml(temp) + "\"" : ""); xml.append(" PHI=\"" + inform.getPhi() + "\" ShowItem=\"" + inform.getShowItem()+ "\" OrderInForm= \""+inform.getOrderInForm()+ "\">"); xml.append(nls); temp = inform.getLeftItemText(); xml.append(temp != null && temp.length() > 0 ? currentIndent + indent + indent + "<OpenClinica:LeftItemText>" + StringEscapeUtils.escapeXml(temp) + "</OpenClinica:LeftItemText>" + nls : ""); temp = inform.getRightItemText(); xml.append(temp != null && temp.length() > 0 ? currentIndent + indent + indent + "<OpenClinica:RightItemText>" + StringEscapeUtils.escapeXml(temp) + "</OpenClinica:RightItemText>" + nls : ""); temp = inform.getItemHeader(); xml.append(temp != null && temp.length() > 0 ? currentIndent + indent + indent + "<OpenClinica:ItemHeader>" + StringEscapeUtils.escapeXml(temp) + "</OpenClinica:ItemHeader>" + nls : ""); temp = inform.getItemSubHeader(); xml.append(temp != null && temp.length() > 0 ? currentIndent + indent + indent + "<OpenClinica:ItemSubHeader>" + StringEscapeUtils.escapeXml(temp) + "</OpenClinica:ItemSubHeader>" + nls : ""); temp = inform.getSectionLabel(); xml.append(temp != null && temp.length() > 0 ? currentIndent + indent + indent + "<OpenClinica:SectionLabel>" + StringEscapeUtils.escapeXml(temp) + "</OpenClinica:SectionLabel>" + nls : ""); ItemResponseBean response = inform.getItemResponse(); xml.append(currentIndent + indent + indent + "<OpenClinica:ItemResponse ResponseType=\"" + StringEscapeUtils.escapeXml(response.getResponseType())); temp = response.getResponseLayout(); if (temp != null && temp.length() > 0) { xml.append("\" ResponseLayout=\"" + StringEscapeUtils.escapeXml(temp) + "\"/>"); } else { xml.append("\"/>"); } xml.append(nls); if("no".equalsIgnoreCase(inform.getShowItem())) { addSimpleConditionalDisplay(inform, currentIndent + indent + indent); } xml.append(currentIndent + indent + "</OpenClinica:ItemPresentInForm>"); xml.append(nls); } xml.append(currentIndent + "</OpenClinica:ItemDetails>"); xml.append(nls); } public void addSimpleConditionalDisplay(ItemPresentInFormBean inform, String currentIndent) { StringBuffer xml = this.getXmlOutput(); String indent = this.getIndent(); SimpleConditionalDisplayBean scd = inform.getSimpleConditionalDisplay(); String name=scd.getControlItemName(),option=scd.getOptionValue(),message=scd.getMessage(); //only SimpleConditionalDisplayBean with controlItemName, option and message has been set for ItemDetails if(name != null && name.length()>0) { xml.append(currentIndent + "<OpenClinica:SimpleConditionalDisplay>"); xml.append(nls); xml.append(currentIndent+indent+"<OpenClinica:ControlItemName>" +StringEscapeUtils.escapeXml(name)+"</OpenClinica:ControlItemName>"); xml.append(nls); xml.append(currentIndent+indent+"<OpenClinica:OptionValue>"+StringEscapeUtils.escapeXml(option) +"</OpenClinica:OptionValue>"); xml.append(nls); xml.append(currentIndent+indent+"<OpenClinica:Message>"+StringEscapeUtils.escapeXml(message) +"</OpenClinica:Message>"); xml.append(nls); xml.append(currentIndent + "</OpenClinica:SimpleConditionalDisplay>"); xml.append(nls); } } public void addStudyGroupClassList(String currentIndent) { StringBuffer xml = this.getXmlOutput(); String indent = this.getIndent(); ArrayList<StudyGroupClassListBean> lists = (ArrayList<StudyGroupClassListBean>) odmstudy.getMetaDataVersion().getStudyGroupClassLists(); if (lists != null) { if (lists.size() > 0) { for (StudyGroupClassListBean l : lists) { xml.append(currentIndent + "<OpenClinica:StudyGroupClassList ID=\"" + StringEscapeUtils.escapeXml(l.getId()) + "\" "); if (l.getName() != null) { xml.append("Name=\"" + StringEscapeUtils.escapeXml(l.getName()) + "\" "); } if (l.getStatus() != null) { xml.append("Status=\"" + l.getStatus() + "\" "); } if (l.getType() != null) { xml.append("Type=\"" + StringEscapeUtils.escapeXml(l.getType()) + "\" "); } if (l.getSubjectAssignment() != null) { xml.append("SubjectAssignment=\"" + StringEscapeUtils.escapeXml(l.getSubjectAssignment()) + "\" "); } xml.append(">"); xml.append(nls); for (StudyGroupItemBean i : (ArrayList<StudyGroupItemBean>) l.getStudyGroupItems()) { xml.append(currentIndent + indent + "<OpenClinica:StudyGroupItem "); if (i.getName() != null) { xml.append("Name=\"" + StringEscapeUtils.escapeXml(i.getName()) + "\" "); } if (i.getDescription() != null) { xml.append("Description=\"" + StringEscapeUtils.escapeXml(i.getDescription()) + "\" "); } xml.append("/>"); xml.append(nls); } xml.append(currentIndent + "</OpenClinica:StudyGroupClassList>"); xml.append(nls); } } } } /* * public void addStudyGroupClassList(String currentIndent) { StringBuffer xml = this.getXmlOutput(); String indent = * this.getIndent(); ArrayList<StudyGroupClassListBean> lists = (ArrayList<StudyGroupClassListBean>) * odmstudy.getMetaDataVersion().getStudyGroupClassLists(); if (lists != null) { if (lists.size() > 0) { for * (StudyGroupClassListBean l : lists) { xml.append(currentIndent + "<OpenClinica:StudyGroupClassList OpenClinica:ID=\"" + * StringEscapeUtils.escapeXml(l.getId()) + "\" "); if (l.getName() != null) { xml.append("OpenClinica:Name=\"" + * StringEscapeUtils.escapeXml(l.getName()) + "\" "); } if (l.getStatus() != null) { xml.append("OpenClinica:Status=\"" + * l.getStatus() + "\" "); } if (l.getType() != null) { xml.append("OpenClinica:Type=\"" + * StringEscapeUtils.escapeXml(l.getType()) + "\" "); } if (l.getSubjectAssignment() != null) { * xml.append("OpenClinica:SubjectAssignment=\"" + StringEscapeUtils.escapeXml(l.getSubjectAssignment()) + "\" "); } * xml.append(">"); xml.append(nls); for (StudyGroupItemBean i : (ArrayList<StudyGroupItemBean>) l.getStudyGroupItems()) { * xml.append(currentIndent + indent + "<OpenClinica:StudyGroupItem "); if (i.getName() != null) { * xml.append("OpenClinica:Name=\"" + StringEscapeUtils.escapeXml(i.getName()) + "\" "); } if (i.getDescription() != null) * { xml.append("OpenClinica:Description=\"" + StringEscapeUtils.escapeXml(i.getDescription()) + "\" "); } * xml.append("/>"); xml.append(nls); } xml.append(currentIndent + "</OpenClinica:StudyGroupClassList>"); xml.append(nls); * } } } } */ public void addStudyParameterLists(String currentIndent) { StringBuffer xml = this.getXmlOutput(); String indent = this.getIndent(); // xml.append(currentIndent + "<OpenClinica:StudyParameterList ID=\"" + "SPL_collectDob" + "\" Name=\"" + "Collect Subject Date Of Birth" + "\">" + nls); xml.append(currentIndent + indent + "<OpenClinica:StudyParameterListItem CodedParameterValue=\"" + "1" + "\">" + nls); xml.append(currentIndent + indent + indent + "<Decode>" + nls); xml.append(currentIndent + indent + indent + indent + "<TranslatedText>" + "Yes" + "</TranslatedText>" + nls); xml.append(currentIndent + indent + indent + "</Decode>" + nls); xml.append(currentIndent + indent + "</OpenClinica:StudyParameterListItem>" + nls); xml.append(currentIndent + indent + "<OpenClinica:StudyParameterListItem CodedParameterValue=\"" + "2" + "\">" + nls); xml.append(currentIndent + indent + indent + "<Decode>" + nls); xml.append(currentIndent + indent + indent + indent + "<TranslatedText>" + "Only Year of Birth" + "</TranslatedText>" + nls); xml.append(currentIndent + indent + indent + "</Decode>" + nls); xml.append(currentIndent + indent + "</OpenClinica:StudyParameterListItem>" + nls); xml.append(currentIndent + indent + "<OpenClinica:StudyParameterListItem CodedParameterValue=\"" + "3" + "\">" + nls); xml.append(currentIndent + indent + indent + "<Decode>" + nls); xml.append(currentIndent + indent + indent + indent + "<TranslatedText>" + "Not Used" + "</TranslatedText>" + nls); xml.append(currentIndent + indent + indent + "</Decode>" + nls); xml.append(currentIndent + indent + "</OpenClinica:StudyParameterListItem>" + nls); xml.append(currentIndent + "</OpenClinica:StudyParameterList>" + nls); // xml.append(currentIndent + "<OpenClinica:StudyParameterList ID=\"" + "SPL_discrepancyManagement" + "\" Name=\"" + "Allow Discrepancy Management" + "\">" + nls); xml.append(currentIndent + indent + "<OpenClinica:StudyParameterListItem CodedParameterValue=\"" + "true" + "\">" + nls); xml.append(currentIndent + indent + indent + "<Decode>" + nls); xml.append(currentIndent + indent + indent + indent + "<TranslatedText>" + "Yes" + "</TranslatedText>" + nls); xml.append(currentIndent + indent + indent + "</Decode>" + nls); xml.append(currentIndent + indent + "</OpenClinica:StudyParameterListItem>" + nls); xml.append(currentIndent + indent + "<OpenClinica:StudyParameterListItem CodedParameterValue=\"" + "false" + "\">" + nls); xml.append(currentIndent + indent + indent + "<Decode>" + nls); xml.append(currentIndent + indent + indent + indent + "<TranslatedText>" + "No" + "</TranslatedText>" + nls); xml.append(currentIndent + indent + indent + "</Decode>" + nls); xml.append(currentIndent + indent + "</OpenClinica:StudyParameterListItem>" + nls); xml.append(currentIndent + "</OpenClinica:StudyParameterList>" + nls); // xml.append(currentIndent + "<OpenClinica:StudyParameterList ID=\"" + "SPL_subjectPersonIdRequired" + "\" Name=\"" + "Person ID Required" + "\">" + nls); xml.append(currentIndent + indent + "<OpenClinica:StudyParameterListItem CodedParameterValue=\"" + "required" + "\">" + nls); xml.append(currentIndent + indent + indent + "<Decode>" + nls); xml.append(currentIndent + indent + indent + indent + "<TranslatedText>" + "Required" + "</TranslatedText>" + nls); xml.append(currentIndent + indent + indent + "</Decode>" + nls); xml.append(currentIndent + indent + "</OpenClinica:StudyParameterListItem>" + nls); xml.append(currentIndent + indent + "<OpenClinica:StudyParameterListItem CodedParameterValue=\"" + "optional" + "\">" + nls); xml.append(currentIndent + indent + indent + "<Decode>" + nls); xml.append(currentIndent + indent + indent + indent + "<TranslatedText>" + "Optional" + "</TranslatedText>" + nls); xml.append(currentIndent + indent + indent + "</Decode>" + nls); xml.append(currentIndent + indent + "</OpenClinica:StudyParameterListItem>" + nls); xml.append(currentIndent + indent + "<OpenClinica:StudyParameterListItem CodedParameterValue=\"" + "not used" + "\">" + nls); xml.append(currentIndent + indent + indent + "<Decode>" + nls); xml.append(currentIndent + indent + indent + indent + "<TranslatedText>" + "Not Used" + "</TranslatedText>" + nls); xml.append(currentIndent + indent + indent + "</Decode>" + nls); xml.append(currentIndent + indent + "</OpenClinica:StudyParameterListItem>" + nls); xml.append(currentIndent + "</OpenClinica:StudyParameterList>" + nls); // xml.append(currentIndent + "<OpenClinica:StudyParameterList ID=\"" + "SPL_genderRequired" + "\" Name=\"" + "Sex Required" + "\">" + nls); xml.append(currentIndent + indent + "<OpenClinica:StudyParameterListItem CodedParameterValue=\"" + "true" + "\">" + nls); xml.append(currentIndent + indent + indent + "<Decode>" + nls); xml.append(currentIndent + indent + indent + indent + "<TranslatedText>" + "Yes" + "</TranslatedText>" + nls); xml.append(currentIndent + indent + indent + "</Decode>" + nls); xml.append(currentIndent + indent + "</OpenClinica:StudyParameterListItem>" + nls); xml.append(currentIndent + indent + "<OpenClinica:StudyParameterListItem CodedParameterValue=\"" + "false" + "\">" + nls); xml.append(currentIndent + indent + indent + "<Decode>" + nls); xml.append(currentIndent + indent + indent + indent + "<TranslatedText>" + "No" + "</TranslatedText>" + nls); xml.append(currentIndent + indent + indent + "</Decode>" + nls); xml.append(currentIndent + indent + "</OpenClinica:StudyParameterListItem>" + nls); xml.append(currentIndent + "</OpenClinica:StudyParameterList>" + nls); // xml.append(currentIndent + "<OpenClinica:StudyParameterList ID=\"" + "SPL_subjectIdGeneration" + "\" Name=\"" + "How To Generate Study SubjectID" + "\">" + nls); xml.append(currentIndent + indent + "<OpenClinica:StudyParameterListItem CodedParameterValue=\"" + "manual" + "\">" + nls); xml.append(currentIndent + indent + indent + "<Decode>" + nls); xml.append(currentIndent + indent + indent + indent + "<TranslatedText>" + "Manual Entry" + "</TranslatedText>" + nls); xml.append(currentIndent + indent + indent + "</Decode>" + nls); xml.append(currentIndent + indent + "</OpenClinica:StudyParameterListItem>" + nls); xml.append(currentIndent + indent + "<OpenClinica:StudyParameterListItem CodedParameterValue=\"" + "auto editable" + "\">" + nls); xml.append(currentIndent + indent + indent + "<Decode>" + nls); xml.append(currentIndent + indent + indent + indent + "<TranslatedText>" + "Auto-generated and Editable" + "</TranslatedText>" + nls); xml.append(currentIndent + indent + indent + "</Decode>" + nls); xml.append(currentIndent + indent + "</OpenClinica:StudyParameterListItem>" + nls); xml.append(currentIndent + indent + "<OpenClinica:StudyParameterListItem CodedParameterValue=\"" + "auto non-editable" + "\">" + nls); xml.append(currentIndent + indent + indent + "<Decode>" + nls); xml.append(currentIndent + indent + indent + indent + "<TranslatedText>" + "Auto-generated and Non-editable" + "</TranslatedText>" + nls); xml.append(currentIndent + indent + indent + "</Decode>" + nls); xml.append(currentIndent + indent + "</OpenClinica:StudyParameterListItem>" + nls); xml.append(currentIndent + "</OpenClinica:StudyParameterList>" + nls); // xml.append(currentIndent + "<OpenClinica:StudyParameterList ID=\"" + "SPL_interviewerNameRequired" + "\" Name=\"" + "When Performing Data Entry, Interviewer Name Required For Data Entry" + "\">" + nls); xml.append(currentIndent + indent + "<OpenClinica:StudyParameterListItem CodedParameterValue=\"" + "yes" + "\">" + nls); xml.append(currentIndent + indent + indent + "<Decode>" + nls); xml.append(currentIndent + indent + indent + indent + "<TranslatedText>" + "Yes" + "</TranslatedText>" + nls); xml.append(currentIndent + indent + indent + "</Decode>" + nls); xml.append(currentIndent + indent + "</OpenClinica:StudyParameterListItem>" + nls); xml.append(currentIndent + indent + "<OpenClinica:StudyParameterListItem CodedParameterValue=\"" + "no" + "\">" + nls); xml.append(currentIndent + indent + indent + "<Decode>" + nls); xml.append(currentIndent + indent + indent + indent + "<TranslatedText>" + "No" + "</TranslatedText>" + nls); xml.append(currentIndent + indent + indent + "</Decode>" + nls); xml.append(currentIndent + indent + "</OpenClinica:StudyParameterListItem>" + nls); xml.append(currentIndent + indent + "<OpenClinica:StudyParameterListItem CodedParameterValue=\"" + "not_used" + "\">" + nls); xml.append(currentIndent + indent + indent + "<Decode>" + nls); xml.append(currentIndent + indent + indent + indent + "<TranslatedText>" + "Not Used" + "</TranslatedText>" + nls); xml.append(currentIndent + indent + indent + "</Decode>" + nls); xml.append(currentIndent + indent + "</OpenClinica:StudyParameterListItem>" + nls); xml.append(currentIndent + "</OpenClinica:StudyParameterList>" + nls); // xml.append(currentIndent + "<OpenClinica:StudyParameterList ID=\"" + "SPL_interviewerNameDefault" + "\" Name=\"" + "When Performing Data Entry, Interviewer Name Default as Blank" + "\">" + nls); xml.append(currentIndent + indent + "<OpenClinica:StudyParameterListItem CodedParameterValue=\"" + "blank" + "\">" + nls); xml.append(currentIndent + indent + indent + "<Decode>" + nls); xml.append(currentIndent + indent + indent + indent + "<TranslatedText>" + "Blank" + "</TranslatedText>" + nls); xml.append(currentIndent + indent + indent + "</Decode>" + nls); xml.append(currentIndent + indent + "</OpenClinica:StudyParameterListItem>" + nls); xml.append(currentIndent + indent + "<OpenClinica:StudyParameterListItem CodedParameterValue=\"" + "pre-populated" + "\">" + nls); xml.append(currentIndent + indent + indent + "<Decode>" + nls); xml.append(currentIndent + indent + indent + indent + "<TranslatedText>" + "Pre-Populated from active user" + "</TranslatedText>" + nls); xml.append(currentIndent + indent + indent + "</Decode>" + nls); xml.append(currentIndent + indent + "</OpenClinica:StudyParameterListItem>" + nls); xml.append(currentIndent + "</OpenClinica:StudyParameterList>" + nls); // xml.append(currentIndent + "<OpenClinica:StudyParameterList ID=\"" + "SPL_interviewerNameEditable" + "\" Name=\"" + "When Performing Data Entry, Interviewer Name Editable" + "\">" + nls); xml.append(currentIndent + indent + "<OpenClinica:StudyParameterListItem CodedParameterValue=\"" + "true" + "\">" + nls); xml.append(currentIndent + indent + indent + "<Decode>" + nls); xml.append(currentIndent + indent + indent + indent + "<TranslatedText>" + "Yes" + "</TranslatedText>" + nls); xml.append(currentIndent + indent + indent + "</Decode>" + nls); xml.append(currentIndent + indent + "</OpenClinica:StudyParameterListItem>" + nls); xml.append(currentIndent + indent + "<OpenClinica:StudyParameterListItem CodedParameterValue=\"" + "false" + "\">" + nls); xml.append(currentIndent + indent + indent + "<Decode>" + nls); xml.append(currentIndent + indent + indent + indent + "<TranslatedText>" + "No" + "</TranslatedText>" + nls); xml.append(currentIndent + indent + indent + "</Decode>" + nls); xml.append(currentIndent + indent + "</OpenClinica:StudyParameterListItem>" + nls); xml.append(currentIndent + "</OpenClinica:StudyParameterList>" + nls); // xml.append(currentIndent + "<OpenClinica:StudyParameterList ID=\"" + "SPL_interviewDateRequired" + "\" Name=\"" + "When Performing Data Entry, Interview Date Required" + "\">" + nls); xml.append(currentIndent + indent + "<OpenClinica:StudyParameterListItem CodedParameterValue=\"" + "true" + "\">" + nls); xml.append(currentIndent + indent + indent + "<Decode>" + nls); xml.append(currentIndent + indent + indent + indent + "<TranslatedText>" + "Yes" + "</TranslatedText>" + nls); xml.append(currentIndent + indent + indent + "</Decode>" + nls); xml.append(currentIndent + indent + "</OpenClinica:StudyParameterListItem>" + nls); xml.append(currentIndent + indent + "<OpenClinica:StudyParameterListItem CodedParameterValue=\"" + "false" + "\">" + nls); xml.append(currentIndent + indent + indent + "<Decode>" + nls); xml.append(currentIndent + indent + indent + indent + "<TranslatedText>" + "No" + "</TranslatedText>" + nls); xml.append(currentIndent + indent + indent + "</Decode>" + nls); xml.append(currentIndent + indent + "</OpenClinica:StudyParameterListItem>" + nls); xml.append(currentIndent + indent + "<OpenClinica:StudyParameterListItem CodedParameterValue=\"" + "not_used" + "\">" + nls); xml.append(currentIndent + indent + indent + "<Decode>" + nls); xml.append(currentIndent + indent + indent + indent + "<TranslatedText>" + "Not Used" + "</TranslatedText>" + nls); xml.append(currentIndent + indent + indent + "</Decode>" + nls); xml.append(currentIndent + indent + "</OpenClinica:StudyParameterListItem>" + nls); xml.append(currentIndent + "</OpenClinica:StudyParameterList>" + nls); // xml.append(currentIndent + "<OpenClinica:StudyParameterList ID=\"" + "SPL_interviewDateDefault" + "\" Name=\"" + "When Performing Data Entry, Interview Date Default as Blank" + "\">" + nls); xml.append(currentIndent + indent + "<OpenClinica:StudyParameterListItem CodedParameterValue=\"" + "blank" + "\">" + nls); xml.append(currentIndent + indent + indent + "<Decode>" + nls); xml.append(currentIndent + indent + indent + indent + "<TranslatedText>" + "Blank" + "</TranslatedText>" + nls); xml.append(currentIndent + indent + indent + "</Decode>" + nls); xml.append(currentIndent + indent + "</OpenClinica:StudyParameterListItem>" + nls); xml.append(currentIndent + indent + "<OpenClinica:StudyParameterListItem CodedParameterValue=\"" + "pre-populated" + "\">" + nls); xml.append(currentIndent + indent + indent + "<Decode>" + nls); xml.append(currentIndent + indent + indent + indent + "<TranslatedText>" + "Pre-Populated from Study Event" + "</TranslatedText>" + nls); xml.append(currentIndent + indent + indent + "</Decode>" + nls); xml.append(currentIndent + indent + "</OpenClinica:StudyParameterListItem>" + nls); xml.append(currentIndent + "</OpenClinica:StudyParameterList>" + nls); // xml.append(currentIndent + "<OpenClinica:StudyParameterList ID=\"" + "SPL_interviewDateEditable" + "\" Name=\"" + "When Performing Data Entry, Interview Date Editable" + "\">" + nls); xml.append(currentIndent + indent + "<OpenClinica:StudyParameterListItem CodedParameterValue=\"" + "true" + "\">" + nls); xml.append(currentIndent + indent + indent + "<Decode>" + nls); xml.append(currentIndent + indent + indent + indent + "<TranslatedText>" + "Yes" + "</TranslatedText>" + nls); xml.append(currentIndent + indent + indent + "</Decode>" + nls); xml.append(currentIndent + indent + "</OpenClinica:StudyParameterListItem>" + nls); xml.append(currentIndent + indent + "<OpenClinica:StudyParameterListItem CodedParameterValue=\"" + "false" + "\">" + nls); xml.append(currentIndent + indent + indent + "<Decode>" + nls); xml.append(currentIndent + indent + indent + indent + "<TranslatedText>" + "No" + "</TranslatedText>" + nls); xml.append(currentIndent + indent + indent + "</Decode>" + nls); xml.append(currentIndent + indent + "</OpenClinica:StudyParameterListItem>" + nls); xml.append(currentIndent + "</OpenClinica:StudyParameterList>" + nls); // xml.append(currentIndent + "<OpenClinica:StudyParameterList ID=\"" + "SPL_personIdShownOnCRF" + "\" Name=\"" + "Show Person ID on CRF Header" + "\">" + nls); xml.append(currentIndent + indent + "<OpenClinica:StudyParameterListItem CodedParameterValue=\"" + "true" + "\">" + nls); xml.append(currentIndent + indent + indent + "<Decode>" + nls); xml.append(currentIndent + indent + indent + indent + "<TranslatedText>" + "Yes" + "</TranslatedText>" + nls); xml.append(currentIndent + indent + indent + "</Decode>" + nls); xml.append(currentIndent + indent + "</OpenClinica:StudyParameterListItem>" + nls); xml.append(currentIndent + indent + "<OpenClinica:StudyParameterListItem CodedParameterValue=\"" + "false" + "\">" + nls); xml.append(currentIndent + indent + indent + "<Decode>" + nls); xml.append(currentIndent + indent + indent + indent + "<TranslatedText>" + "No" + "</TranslatedText>" + nls); xml.append(currentIndent + indent + indent + "</Decode>" + nls); xml.append(currentIndent + indent + "</OpenClinica:StudyParameterListItem>" + nls); xml.append(currentIndent + "</OpenClinica:StudyParameterList>" + nls); // xml.append(currentIndent + "<OpenClinica:StudyParameterList ID=\"" + "SPL_secondaryLabelViewable" + "\" Name=\"" + "Secondary Label Viewable" + "\">" + nls); xml.append(currentIndent + indent + "<OpenClinica:StudyParameterListItem CodedParameterValue=\"" + "true" + "\">" + nls); xml.append(currentIndent + indent + indent + "<Decode>" + nls); xml.append(currentIndent + indent + indent + indent + "<TranslatedText>" + "Yes" + "</TranslatedText>" + nls); xml.append(currentIndent + indent + indent + "</Decode>" + nls); xml.append(currentIndent + indent + "</OpenClinica:StudyParameterListItem>" + nls); xml.append(currentIndent + indent + "<OpenClinica:StudyParameterListItem CodedParameterValue=\"" + "false" + "\">" + nls); xml.append(currentIndent + indent + indent + "<Decode>" + nls); xml.append(currentIndent + indent + indent + indent + "<TranslatedText>" + "No" + "</TranslatedText>" + nls); xml.append(currentIndent + indent + indent + "</Decode>" + nls); xml.append(currentIndent + indent + "</OpenClinica:StudyParameterListItem>" + nls); xml.append(currentIndent + "</OpenClinica:StudyParameterList>" + nls); // xml.append(currentIndent + "<OpenClinica:StudyParameterList ID=\"" + "SPL_adminForcedReasonForChange" + "\" Name=\"" + "Forced Reason For Change in Administrative Editing" + "\">" + nls); xml.append(currentIndent + indent + "<OpenClinica:StudyParameterListItem CodedParameterValue=\"" + "true" + "\">" + nls); xml.append(currentIndent + indent + indent + "<Decode>" + nls); xml.append(currentIndent + indent + indent + indent + "<TranslatedText>" + "Yes" + "</TranslatedText>" + nls); xml.append(currentIndent + indent + indent + "</Decode>" + nls); xml.append(currentIndent + indent + "</OpenClinica:StudyParameterListItem>" + nls); xml.append(currentIndent + indent + "<OpenClinica:StudyParameterListItem CodedParameterValue=\"" + "false" + "\">" + nls); xml.append(currentIndent + indent + indent + "<Decode>" + nls); xml.append(currentIndent + indent + indent + indent + "<TranslatedText>" + "No" + "</TranslatedText>" + nls); xml.append(currentIndent + indent + indent + "</Decode>" + nls); xml.append(currentIndent + indent + "</OpenClinica:StudyParameterListItem>" + nls); xml.append(currentIndent + "</OpenClinica:StudyParameterList>" + nls); // xml.append(currentIndent + "<OpenClinica:StudyParameterList ID=\"" + "SPL_eventLocationRequired" + "\" Name=\"" + "Event Location Required" + "\">" + nls); xml.append(currentIndent + indent + "<OpenClinica:StudyParameterListItem CodedParameterValue=\"" + "required" + "\">" + nls); xml.append(currentIndent + indent + indent + "<Decode>" + nls); xml.append(currentIndent + indent + indent + indent + "<TranslatedText>" + "Required" + "</TranslatedText>" + nls); xml.append(currentIndent + indent + indent + "</Decode>" + nls); xml.append(currentIndent + indent + "</OpenClinica:StudyParameterListItem>" + nls); xml.append(currentIndent + indent + "<OpenClinica:StudyParameterListItem CodedParameterValue=\"" + "optional" + "\">" + nls); xml.append(currentIndent + indent + indent + "<Decode>" + nls); xml.append(currentIndent + indent + indent + indent + "<TranslatedText>" + "Optional" + "</TranslatedText>" + nls); xml.append(currentIndent + indent + indent + "</Decode>" + nls); xml.append(currentIndent + indent + "</OpenClinica:StudyParameterListItem>" + nls); xml.append(currentIndent + indent + "<OpenClinica:StudyParameterListItem CodedParameterValue=\"" + "not_used" + "\">" + nls); xml.append(currentIndent + indent + indent + "<Decode>" + nls); xml.append(currentIndent + indent + indent + indent + "<TranslatedText>" + "Not Used" + "</TranslatedText>" + nls); xml.append(currentIndent + indent + indent + "</Decode>" + nls); xml.append(currentIndent + indent + "</OpenClinica:StudyParameterListItem>" + nls); xml.append(currentIndent + "</OpenClinica:StudyParameterList>" + nls); } public void setOdmStudy(OdmStudyBean odmstudy) { this.odmstudy = odmstudy; } public OdmStudyBean getOdmStudyBean() { return this.odmstudy; } public LinkedHashMap<String, OdmStudyBean> getOdmStudyMap() { return odmStudyMap; } public void setOdmStudyMap(LinkedHashMap<String, OdmStudyBean> odmStudyMap) { this.odmStudyMap = odmStudyMap; } public CoreResources getCoreResources() { return coreResources; } public void setCoreResources(CoreResources coreResources) { this.coreResources = coreResources; } protected String measurementUnitRefString(String muRefOid) { String temp = ""; temp = "<MeasurementUnitRef MeasurementUnitOID=\"" + StringEscapeUtils.escapeXml(muRefOid) + "\"/>"; return temp; } }