Skip to content

Commit b61064a

Browse files
authored
Move study design features into a new module (#6686)
1 parent 697d040 commit b61064a

84 files changed

Lines changed: 8896 additions & 8632 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

api/src/org/labkey/api/study/Study.java

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
import org.jetbrains.annotations.Nullable;
2020
import org.labkey.api.attachments.Attachment;
2121
import org.labkey.api.attachments.AttachmentFile;
22-
import org.labkey.api.data.Container;
2322
import org.labkey.api.security.User;
2423
import org.labkey.api.util.HtmlString;
2524

@@ -58,18 +57,6 @@ public interface Study extends StudyEntity
5857

5958
Collection<? extends Cohort> getCohorts(User user);
6059

61-
Collection<? extends AssaySpecimenConfig> getAssaySpecimenConfigs();
62-
63-
List<? extends Visit> getVisitsForAssaySchedule();
64-
65-
List<? extends Product> getStudyProducts(User user, String role);
66-
67-
List<? extends Treatment> getStudyTreatments(User user);
68-
69-
List<? extends TreatmentVisitMap> getStudyTreatmentVisitMap(Container container, @Nullable Integer cohortId);
70-
71-
List<? extends Visit> getVisitsForTreatmentSchedule();
72-
7360
List<? extends ParticipantCategory> getParticipantCategories(User user);
7461

7562
@Nullable String getParticipantCohortProperty();

api/src/org/labkey/api/study/StudyService.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import org.labkey.api.module.Module;
2929
import org.labkey.api.query.QuerySchema;
3030
import org.labkey.api.query.UserSchema;
31+
import org.labkey.api.query.ValidationException;
3132
import org.labkey.api.reports.model.ViewCategory;
3233
import org.labkey.api.reports.report.view.ReportUtil;
3334
import org.labkey.api.security.User;
@@ -233,4 +234,7 @@ interface StudyTabProvider
233234
ReportUtil.ReportFilter getStudyReportFilter(boolean editOnly);
234235

235236
Map<String, BigDecimal> getVisitImportMap(Study study, boolean includeStandardMapping);
237+
238+
// Methods created to support Vaccine study designs
239+
ValidationException updateAssayPlan(User user, Study study, String assayPlan);
236240
}

api/src/org/labkey/api/study/StudyUrls.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,6 @@ public interface StudyUrls extends UrlProvider
4040
ActionURL getDatasetsURL(Container container);
4141
ActionURL getManageDatasetsURL(Container container);
4242
ActionURL getManageReportPermissions(Container container);
43-
ActionURL getManageAssayScheduleURL(Container container, boolean useAlternateLookupFields);
44-
ActionURL getManageTreatmentsURL(Container container, boolean useSingleTableEditor);
4543
ActionURL getManageFileWatchersURL(Container container);
4644
ActionURL getLinkToStudyURL(Container container, ExpSampleType sampleType);
4745
ActionURL getLinkToStudyURL(Container container, ExpProtocol protocol);
@@ -50,4 +48,9 @@ public interface StudyUrls extends UrlProvider
5048
ActionURL getTypeNotFoundURL(Container container, int datasetId);
5149

5250
void addManageStudyNavTrail(NavTree root, Container container, User user);
51+
52+
ActionURL getManageLocationsURL(Container container);
53+
ActionURL getManageVisitsURL(Container container);
54+
ActionURL getManageCohortsURL(Container container);
55+
ActionURL getVisitOrderURL(Container container);
5356
}

study/api-src/org/labkey/api/study/StudyUtils.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,6 @@ public class StudyUtils
2828
public static final String SUBMISSION_WARNING = "Once a request is submitted, its specimen list may no longer be modified. Continue?";
2929
public static final String CANCELLATION_WARNING = "Canceling will permanently delete this pending request. Continue?";
3030

31-
public static final String STUDY_DESIGN_FEATURE_FLAG = "studyDesignFlag";
32-
3331
//Create a fixed point number encoding the date.
3432
public static double sequenceNumFromDate(Date d)
3533
{

study/api-src/org/labkey/api/study/model/CohortService.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@
22

33
import org.jetbrains.annotations.Nullable;
44
import org.labkey.api.data.Container;
5+
import org.labkey.api.query.ValidationException;
56
import org.labkey.api.security.User;
67
import org.labkey.api.services.ServiceRegistry;
78
import org.labkey.api.study.Cohort;
89
import org.labkey.api.study.CohortFilter;
10+
import org.labkey.api.study.Study;
911
import org.labkey.api.view.ActionURL;
1012

1113
import java.util.Collection;
@@ -37,4 +39,15 @@ static void setInstance(CohortService impl)
3739
Collection<CohortFilter> getCohortFilters(CohortFilter.Type type, Container c, User user);
3840

3941
Collection<? extends Cohort> getCohorts(Container container, User user);
42+
43+
// Methods created to support Vaccine study designs
44+
Cohort getCohortByLabel(Container container, User user, String label);
45+
46+
Cohort getCohortForRowId(Container container, User user, int rowId);
47+
48+
void deleteCohort(Cohort cohort);
49+
50+
Cohort updateCohort(Container container, User user, int rowId, String label, Integer subjectCount);
51+
52+
Cohort createCohort(Study study, User user, String newLabel, boolean enrolled, Integer subjectCount, String description) throws ValidationException;
4053
}

study/api-src/org/labkey/api/study/model/VisitService.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
package org.labkey.api.study.model;
22

33
import org.apache.logging.log4j.Logger;
4+
import org.jetbrains.annotations.NotNull;
45
import org.jetbrains.annotations.Nullable;
56
import org.labkey.api.query.ValidationException;
67
import org.labkey.api.security.User;
78
import org.labkey.api.services.ServiceRegistry;
89
import org.labkey.api.study.Study;
910
import org.labkey.api.study.Visit;
1011

12+
import java.math.BigDecimal;
1113
import java.util.Collection;
1214

1315
/**
@@ -34,4 +36,9 @@ static void setInstance(VisitService impl)
3436
* Updates this study's participant, visit, and participant visit tables. Also updates automatic cohort assignments.
3537
*/
3638
ValidationException updateParticipantVisits(Study study, User user);
39+
40+
// Methods created to support Vaccine study designs
41+
Visit createVisit(Study study, User user, @NotNull BigDecimal seqMin, String label, Visit.Type type);
42+
43+
void deleteVisit(Study study, User user, Visit visit);
3744
}

study/api-src/org/labkey/api/studydesign/StudyDesignManager.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
import org.labkey.api.data.Table;
2323
import org.labkey.api.data.TableInfo;
2424
import org.labkey.api.exp.property.PropertyService;
25+
import org.labkey.api.module.Module;
26+
import org.labkey.api.module.ModuleLoader;
2527
import org.labkey.api.security.User;
2628
import org.labkey.api.studydesign.query.AbstractStudyDesignDomainKind;
2729
import org.labkey.api.studydesign.query.StudyDesignQuerySchema;
@@ -43,12 +45,22 @@
4345
public class StudyDesignManager
4446
{
4547
private static final StudyDesignManager _instance = new StudyDesignManager();
48+
public static final String MODULE_NAME = "StudyDesign";
4649

4750
public static StudyDesignManager get()
4851
{
4952
return _instance;
5053
}
5154

55+
public boolean isModuleActive(Container c)
56+
{
57+
if (c == null)
58+
return false;
59+
60+
Module studyDesignModule = ModuleLoader.getInstance().getModule(MODULE_NAME);
61+
return null != studyDesignModule && c.getActiveModules().contains(studyDesignModule);
62+
}
63+
5264
public void deleteStudyDesignData(Container c, Set<TableInfo> deletedTables)
5365
{
5466
Filter filter = SimpleFilter.createContainerFilter(c);
@@ -77,6 +89,11 @@ public void deleteStudyDesignData(Container c, Set<TableInfo> deletedTables)
7789
deletedTables.add(StudyDesignSchema.getInstance().getTableInfoTreatmentVisitMap());
7890
Table.delete(StudyDesignSchema.getInstance().getTableInfoObjective(), filter);
7991
deletedTables.add(StudyDesignSchema.getInstance().getTableInfoObjective());
92+
93+
Table.delete(StudyDesignSchema.getInstance().getTableInfoAssaySpecimenVisit(), filter);
94+
deletedTables.add(StudyDesignSchema.getInstance().getTableInfoAssaySpecimenVisit());
95+
Table.delete(StudyDesignSchema.getInstance().getTableInfoAssaySpecimen(), filter);
96+
deletedTables.add(StudyDesignSchema.getInstance().getTableInfoAssaySpecimen());
8097
}
8198

8299
// Proactively create the domains at study creation time to avoid problems with lazy creation, #42641
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package org.labkey.api.studydesign;
2+
3+
import org.jetbrains.annotations.Nullable;
4+
import org.labkey.api.data.Container;
5+
import org.labkey.api.security.User;
6+
import org.labkey.api.services.ServiceRegistry;
7+
import org.labkey.api.study.AssaySpecimenConfig;
8+
import org.labkey.api.study.Product;
9+
import org.labkey.api.study.Treatment;
10+
import org.labkey.api.study.Visit;
11+
12+
import java.util.Collection;
13+
import java.util.List;
14+
15+
public interface StudyDesignService
16+
{
17+
@Nullable
18+
static StudyDesignService get()
19+
{
20+
return ServiceRegistry.get().getService(StudyDesignService.class);
21+
}
22+
23+
List<? extends Product> getStudyProducts(Container c, User user, String role);
24+
List<? extends Treatment> getStudyTreatments(Container c, User user);
25+
List<? extends Visit> getVisitsForTreatmentSchedule(Container c);
26+
Collection<? extends AssaySpecimenConfig> getAssaySpecimenConfigs(Container c);
27+
void deleteTreatmentVisitMapForCohort(Container container, Integer cohortId);
28+
void deleteTreatmentVisitMapForVisit(Container container, Integer visitId);
29+
void deleteAssaySpecimenVisits(Container container, int visitId);
30+
31+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package org.labkey.api.studydesign;
2+
3+
import org.labkey.api.action.UrlProvider;
4+
import org.labkey.api.data.Container;
5+
import org.labkey.api.view.ActionURL;
6+
7+
public interface StudyDesignUrls extends UrlProvider
8+
{
9+
ActionURL getManageAssayScheduleURL(Container container, boolean useAlternateLookupFields);
10+
ActionURL getManageStudyProductsURL(Container container);
11+
ActionURL getManageTreatmentsURL(Container container, boolean useSingleTableEditor);
12+
}

0 commit comments

Comments
 (0)