use of org.cdisc.ns.odm.v130_api.ODM in project OpenClinica by OpenClinica.
the class OdmController method getODM.
private ODM getODM(String studyOID, String subjectKey) {
ODM odm = new ODM();
String ssoid = subjectKey;
if (ssoid == null) {
return null;
}
CRFVersionDAO versionDAO = new CRFVersionDAO(dataSource);
StudyDAO studyDAO = new StudyDAO(dataSource);
StudySubjectDAO studySubjectDAO = new StudySubjectDAO(dataSource);
EventCRFDAO eventCRFDAO = new EventCRFDAO(dataSource);
ItemDataDAO itemDataDAO = new ItemDataDAO(dataSource);
CRFDAO crfDAO = new CRFDAO(dataSource);
List<ODMcomplexTypeDefinitionFormData> formDatas = new ArrayList<>();
try {
// Retrieve crfs for next event
StudySubjectBean studySubjectBean = studySubjectDAO.findByOid(ssoid);
ParticipantEventService participantEventService = new ParticipantEventService(dataSource);
StudyEventBean nextEvent = participantEventService.getNextParticipantEvent(studySubjectBean);
if (nextEvent != null) {
logger.debug("Found event: " + nextEvent.getName() + " - ID: " + nextEvent.getId());
List<EventCRFBean> eventCrfs = eventCRFDAO.findAllByStudyEvent(nextEvent);
StudyBean study = studyDAO.findByOid(studyOID);
if (!mayProceed(studyOID, studySubjectBean))
return odm;
List<EventDefinitionCRFBean> eventDefCrfs = participantEventService.getEventDefCrfsForStudyEvent(studySubjectBean, nextEvent);
for (EventDefinitionCRFBean eventDefCrf : eventDefCrfs) {
if (eventDefCrf.isParticipantForm()) {
EventCRFBean eventCRF = participantEventService.getExistingEventCRF(studySubjectBean, nextEvent, eventDefCrf);
boolean itemDataExists = false;
boolean validStatus = true;
CRFVersionBean crfVersion = null;
if (eventCRF != null) {
if (eventCRF.getStatus().getId() != 1 && eventCRF.getStatus().getId() != 2)
validStatus = false;
if (itemDataDAO.findAllByEventCRFId(eventCRF.getId()).size() > 0)
itemDataExists = true;
crfVersion = (CRFVersionBean) versionDAO.findByPK(eventCRF.getCRFVersionId());
} else
crfVersion = (CRFVersionBean) versionDAO.findByPK(eventDefCrf.getDefaultVersionId());
if (validStatus) {
String formUrl = null;
if (!itemDataExists)
formUrl = createEnketoUrl(studyOID, crfVersion, nextEvent, ssoid);
else
formUrl = createEditUrl(studyOID, crfVersion, nextEvent, ssoid);
formDatas.add(getFormDataPerCrf(crfVersion, nextEvent, eventCrfs, crfDAO, formUrl, itemDataExists));
}
}
}
return createOdm(study, studySubjectBean, nextEvent, formDatas);
} else {
logger.debug("Unable to find next event for subject.");
}
} catch (Exception e) {
logger.error(e.getMessage());
logger.error(ExceptionUtils.getStackTrace(e));
}
return odm;
}
use of org.cdisc.ns.odm.v130_api.ODM in project OpenClinica by OpenClinica.
the class OdmStudySubjectController method createOdm.
private ODM createOdm(StudyBean studyBean, StudySubjectBean studySubjectBean) {
ODM odm = new ODM();
ODMcomplexTypeDefinitionClinicalData clinicalData = null;
if (studyBean != null) {
clinicalData = generateClinicalData(studyBean);
if (studySubjectBean != null) {
ODMcomplexTypeDefinitionSubjectData subjectData = generateSubjectData(studySubjectBean);
clinicalData.getSubjectData().add(subjectData);
}
odm.getClinicalData().add(clinicalData);
}
return odm;
}
use of org.cdisc.ns.odm.v130_api.ODM in project OpenClinica by OpenClinica.
the class OdmController method createOdm.
private ODM createOdm(StudyBean study, StudySubjectBean studySubjectBean, StudyEventBean nextEvent, List<ODMcomplexTypeDefinitionFormData> formDatas) {
ODM odm = new ODM();
ODMcomplexTypeDefinitionClinicalData clinicalData = generateClinicalData(study);
ODMcomplexTypeDefinitionSubjectData subjectData = generateSubjectData(studySubjectBean);
ODMcomplexTypeDefinitionStudyEventData studyEventData = generateStudyEventData(nextEvent);
// Create the object graph
studyEventData.getFormData().addAll(formDatas);
subjectData.getStudyEventData().add(studyEventData);
clinicalData.getSubjectData().add(subjectData);
odm.getClinicalData().add(clinicalData);
return odm;
}
Aggregations