@Test public void testLeadingSiteCorrect() { TrialSite c = factory.getTrialSite(); validTrial.setLeadingSite(c); assertEquals(c, validTrial.getLeadingSite()); assertValid(validTrial); }
private void randomizeInValidTrialTwoYears() throws IllegalArgumentException, TrialStateException { authenticatAsPrincipalInvestigator(); validTrial.setStartDate(new GregorianCalendar(2009, 0, 1)); validTrial.setEndDate(new GregorianCalendar(2010, 11, 1)); int blocksize = 4; int randomizations = 240; TreatmentArm arm1 = new TreatmentArm(); arm1.setPlannedSubjects(randomizations / 2); arm1.setName("arm1"); arm1.setTrial(validTrial); TreatmentArm arm2 = new TreatmentArm(); arm2.setPlannedSubjects(randomizations / 2); arm2.setName("arm2"); arm2.setTrial(validTrial); List<TreatmentArm> arms = new ArrayList<TreatmentArm>(); arms.add(arm1); arms.add(arm2); trialService.create(validTrial); validTrial.setTreatmentArms(arms); BlockRandomizationConfig config = new BlockRandomizationConfig(); config.setMaximum(blocksize); config.setMinimum(blocksize); validTrial.setRandomizationConfiguration(config); trialService.update(validTrial); assertTrue(validTrial.getId() > 0); assertEquals(2, validTrial.getTreatmentArms().size()); authenticatAsInvestigator(); for (int i = 0; i < randomizations; i++) { TrialSubject subject = new TrialSubject(); subject.setIdentification("identification" + i); subject.setTrialSite(validTrial.getLeadingSite()); trialService.randomize(validTrial, subject); subject.setCreatedAt(new GregorianCalendar(2009 + (i >= 120 ? 1 : 0), i % 12, 1)); sessionFactory.getCurrentSession().update(subject); if ((i % blocksize) == (blocksize - 1)) { assertEquals( validTrial.getTreatmentArms().get(0).getSubjects().size(), validTrial.getTreatmentArms().get(1).getSubjects().size()); } int diff = validTrial.getTreatmentArms().get(0).getSubjects().size() - validTrial.getTreatmentArms().get(1).getSubjects().size(); assertTrue((blocksize / 2) >= diff && (-1) * (blocksize / 2) <= diff); } Trial dbTrial = trialService.getObject(validTrial.getId()); assertNotNull(dbTrial); assertEquals(validTrial.getName(), dbTrial.getName()); assertEquals(2, dbTrial.getTreatmentArms().size()); assertEquals( randomizations, dbTrial.getTreatmentArms().get(0).getSubjects().size() + dbTrial.getTreatmentArms().get(1).getSubjects().size()); assertEquals(randomizations / 2, dbTrial.getTreatmentArms().get(0).getSubjects().size()); assertEquals(randomizations / 2, dbTrial.getTreatmentArms().get(1).getSubjects().size()); }
@Override @Transactional(propagation = Propagation.REQUIRED) public void logTrialChange( LogEntry.ActionType action, String username, Trial oldTrial, Trial changedTrial) { LogEntry entry = new LogEntry(); entry.setAction(action); entry.setUsername(username); entry.setClazz(Trial.class); entry.setIdentifier(changedTrial.getId()); StringBuilder sb = new StringBuilder(); if (!oldTrial.getName().equals(changedTrial.getName())) { sb.append("Name: ") .append(oldTrial.getName()) .append(" -> ") .append(changedTrial.getName()) .append(" | "); } if (!oldTrial.getAbbreviation().equals(changedTrial.getAbbreviation())) { sb.append("Abbreviation: ") .append(oldTrial.getAbbreviation()) .append(" -> ") .append(changedTrial.getAbbreviation()) .append(" | "); } if (!oldTrial.getDescription().equals(changedTrial.getDescription())) { sb.append("Description: ") .append(oldTrial.getDescription()) .append(" -> ") .append(changedTrial.getDescription()) .append(" | "); } if (!oldTrial.getStartDate().equals(changedTrial.getStartDate())) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); sb.append("Start-Date: ") .append(sdf.format(oldTrial.getStartDate().getTime())) .append(" -> ") .append(sdf.format(changedTrial.getStartDate().getTime())) .append(" | "); } if (!oldTrial.getEndDate().equals(changedTrial.getEndDate())) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); sb.append("End-Date: ") .append(sdf.format(oldTrial.getEndDate().getTime())) .append(" -> ") .append(sdf.format(changedTrial.getEndDate().getTime())) .append(" | "); } if (!oldTrial.getLeadingSite().equals(changedTrial.getLeadingSite())) { sb.append("Leading Site: ") .append(oldTrial.getLeadingSite().getName()) .append(" -> ") .append(changedTrial.getLeadingSite().getName()) .append(" | "); } if (!oldTrial.getSponsorInvestigator().equals(changedTrial.getSponsorInvestigator())) { sb.append("Sponsor investigator: ") .append(oldTrial.getSponsorInvestigator().getUIName()) .append(" -> ") .append(changedTrial.getSponsorInvestigator().getUIName()) .append(" | "); } if (!(oldTrial.getStatus() == changedTrial.getStatus())) { sb.append("Status: ") .append(oldTrial.getStatus()) .append(" -> ") .append(changedTrial.getStatus()); } if (sb.length() == 0) { sb.append(changedTrial.getAbbreviation()); } entry.setUiName(sb.toString()); entry.setValue(sb.toString()); entityManager.persist(entry); }
@Test public void testLeadingSiteNotNull() { validTrial.setLeadingSite(null); assertNull(validTrial.getLeadingSite()); assertInvalid(validTrial); }
@Test public void testChartSubGroups() { authenticatAsPrincipalInvestigator(); validTrial.setStartDate(new GregorianCalendar(2009, 0, 1)); validTrial.setEndDate(new GregorianCalendar(2010, 11, 1)); int blocksize = 4; int randomizations = 240; TreatmentArm arm1 = new TreatmentArm(); arm1.setPlannedSubjects(randomizations / 2); arm1.setName("arm1"); arm1.setTrial(validTrial); TreatmentArm arm2 = new TreatmentArm(); arm2.setPlannedSubjects(randomizations / 2); arm2.setName("arm2"); arm2.setTrial(validTrial); List<TreatmentArm> arms = new ArrayList<TreatmentArm>(); arms.add(arm1); arms.add(arm2); validTrial.setTreatmentArms(arms); DichotomousCriterion cr = new DichotomousCriterion(); cr.setOption1("1"); cr.setOption2("2"); DichotomousCriterion cr1 = new DichotomousCriterion(); cr1.setOption1("1"); cr1.setOption2("2"); DichotomousCriterion cr2 = new DichotomousCriterion(); cr2.setOption1("1"); cr2.setOption2("2"); try { cr.addStrata(new DichotomousConstraint(Arrays.asList(new String[] {"1"}))); cr.addStrata(new DichotomousConstraint(Arrays.asList(new String[] {"2"}))); cr1.addStrata(new DichotomousConstraint(Arrays.asList(new String[] {"1"}))); cr1.addStrata(new DichotomousConstraint(Arrays.asList(new String[] {"2"}))); cr2.addStrata(new DichotomousConstraint(Arrays.asList(new String[] {"1"}))); cr2.addStrata(new DichotomousConstraint(Arrays.asList(new String[] {"2"}))); validTrial.addCriterion(cr); validTrial.addCriterion(cr1); validTrial.addCriterion(cr2); } catch (ContraintViolatedException e) { BoxedException.throwBoxed(e); } BlockRandomizationConfig config = new BlockRandomizationConfig(); config.setMaximum(blocksize); config.setMinimum(blocksize); validTrial.setRandomizationConfiguration(config); trialService.create(validTrial); assertTrue(validTrial.getId() > 0); assertEquals(2, validTrial.getTreatmentArms().size()); authenticatAsInvestigator(); for (int i = 0; i < randomizations; i++) { TrialSubject subject = new TrialSubject(); subject.setIdentification("identification" + i); subject.setTrialSite(validTrial.getLeadingSite()); SubjectProperty<Serializable> subprob = new SubjectProperty<Serializable>(validTrial.getCriteria().get(0)); SubjectProperty<Serializable> subprob1 = new SubjectProperty<Serializable>(validTrial.getCriteria().get(1)); SubjectProperty<Serializable> subprob2 = new SubjectProperty<Serializable>(validTrial.getCriteria().get(2)); try { if ((new Random()).nextInt(2) == 0) { subprob.setValue(cr.getOption1()); } else { subprob.setValue(cr.getOption2()); } if ((new Random()).nextInt(2) == 0) { subprob1.setValue(cr1.getOption1()); } else { subprob1.setValue(cr1.getOption2()); } if ((new Random()).nextInt(2) == 0) { subprob2.setValue(cr2.getOption1()); } else { subprob2.setValue(cr2.getOption2()); } } catch (ContraintViolatedException e) { BoxedException.throwBoxed(e); } Set<SubjectProperty<?>> proberties = new HashSet<SubjectProperty<?>>(); proberties.add(subprob); proberties.add(subprob1); proberties.add(subprob2); subject.setProperties(proberties); trialService.randomize(validTrial, subject); subject.setCreatedAt(new GregorianCalendar(2009 + (i >= 120 ? 1 : 0), i % 12, 1)); sessionFactory.getCurrentSession().update(subject); } ChartData data = chartsService.generateRecruitmentChartFactors(validTrial); assertEquals(8, data.getData().size()); assertEquals(8, data.getData().get(0).length); assertEquals(8, data.getXLabels().size()); }