Skip to content

Commit 2d0b2ae

Browse files
committed
Add study summary columns
1 parent 69618db commit 2d0b2ae

File tree

9 files changed

+238
-0
lines changed

9 files changed

+238
-0
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<query xmlns="http://labkey.org/data/xml/query">
2+
<metadata>
3+
<tables xmlns="http://labkey.org/data/xml">
4+
<table tableName="studies" tableDbType="TABLE" useColumnOrder="false">
5+
<columns>
6+
<column columnName="studySummary" wrappedColumnName="rowId">
7+
<isUnselectable>true</isUnselectable>
8+
<shownInInsertView>false</shownInInsertView>
9+
<shownInUpdateView>false</shownInUpdateView>
10+
<columnTitle>Summary Information</columnTitle>
11+
<fk>
12+
<fkDbSchema>studies</fkDbSchema>
13+
<fkTable>studiesSummary</fkTable>
14+
<fkColumnName>rowId</fkColumnName>
15+
</fk>
16+
</column>
17+
</columns>
18+
</table>
19+
</tables>
20+
</metadata>
21+
</query>
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<customView xmlns="http://labkey.org/data/xml/queryCustomView" hidden="false" canOverride="false">
2+
<columns>
3+
<column name="rowId"/>
4+
<column name="studyName"/>
5+
<column name="label"/>
6+
<column name="category"/>
7+
<column name="description"/>
8+
<column name="cohorts"/>
9+
<column name="studySummary/numAnimals"/>
10+
<column name="studySummary/sexes"/>
11+
<column name="studySummary/challenges"/>
12+
<column name="studySummary/artInitiationsDPI"/>
13+
<column name="studySummary/interventions"/>
14+
</columns>
15+
<sorts>
16+
<sort column="studyName" descending="false"/>
17+
</sorts>
18+
</customView>
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
<query xmlns="http://labkey.org/data/xml/query">
2+
<metadata>
3+
<tables xmlns="http://labkey.org/data/xml">
4+
<table tableName="studiesSummary" tableDbType="TABLE" useColumnOrder="true">
5+
<tableTitle>Studies Summary</tableTitle>
6+
<columns>
7+
<column columnName="rowId">
8+
9+
</column>
10+
<column columnName="labelOrName">
11+
12+
</column>
13+
<column columnName="description">
14+
15+
</column>
16+
<column columnName="cohorts">
17+
18+
</column>
19+
<column columnName="numAnimals">
20+
<columnTitle># Animals</columnTitle>
21+
</column>
22+
<column columnName="sexes">
23+
<columnTitle>Sex(es)</columnTitle>
24+
</column>
25+
<column columnName="challenges">
26+
<columnTitle>SIV Challenges</columnTitle>
27+
</column>
28+
<column columnName="artInitiationsDPI">
29+
<columnTitle>ART Initiation(s) (DPI)</columnTitle>
30+
</column>
31+
<column columnName="interventions">
32+
<columnTitle>Interventions</columnTitle>
33+
</column>
34+
</columns>
35+
</table>
36+
</tables>
37+
</metadata>
38+
</query>
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
SELECT
2+
s.rowId,
3+
s.labelOrName,
4+
s.description,
5+
group_concat(DISTINCT a.cohortId.labelOrName, char(10)) as cohorts,
6+
count(DISTINCT a.Id) as numAnimals,
7+
group_concat(DISTINCT a.DataSets.Demographics.sex) as sexes,
8+
group_concat(DISTINCT a.sivArt.allInfections, char(10)) as challenges,
9+
group_concat(DISTINCT a.sivArt.artInitiationDPI, char(10)) as artInitiationsDPI,
10+
group_concat(DISTINCT a.interventions.allInterventions, char(10)) as interventions,
11+
12+
13+
FROM studies.studies s
14+
LEFT JOIN study.assignment a ON (a.cohortId.studyId = s.rowId)
15+
16+
GROUP BY s.rowId, s.labelOrName, s.description
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
<query xmlns="http://labkey.org/data/xml/query">
2+
<metadata>
3+
<tables xmlns="http://labkey.org/data/xml">
4+
<table tableName="studiesSummary" tableDbType="TABLE" useColumnOrder="true">
5+
<tableTitle>Study Cohort Summary</tableTitle>
6+
<columns>
7+
<column columnName="rowId">
8+
9+
</column>
10+
<column columnName="studyName">
11+
<columnTitle>Study Name</columnTitle>
12+
</column>
13+
<column columnName="description">
14+
15+
</column>
16+
<column columnName="labelOrName">
17+
<columnTitle>Cohort Name</columnTitle>
18+
</column>
19+
<column columnName="numAnimals">
20+
<columnTitle># Animals</columnTitle>
21+
</column>
22+
<column columnName="sexes">
23+
<columnTitle>Sex(es)</columnTitle>
24+
</column>
25+
<column columnName="challenges">
26+
<columnTitle>SIV Challenges</columnTitle>
27+
</column>
28+
<column columnName="artInitiationsDPI">
29+
<columnTitle>ART Initiation(s) (DPI)</columnTitle>
30+
</column>
31+
<column columnName="interventions">
32+
<columnTitle>Interventions</columnTitle>
33+
</column>
34+
</columns>
35+
</table>
36+
</tables>
37+
</metadata>
38+
</query>
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
SELECT
2+
sc.rowId,
3+
sc.studyId.labelOrName as studyName,
4+
sc.labelOrName,
5+
sc.studyId.description,
6+
count(DISTINCT a.Id) as numAnimals,
7+
group_concat(DISTINCT a.DataSets.Demographics.sex) as sexes,
8+
group_concat(DISTINCT a.sivArt.allInfections, char(10)) as challenges,
9+
group_concat(DISTINCT a.sivArt.artInitiationDPI, char(10)) as artInitiationsDPI,
10+
group_concat(DISTINCT a.interventions.allInterventions, char(10)) as interventions
11+
12+
13+
FROM studies.studyCohorts sc
14+
LEFT JOIN study.assignment a ON (a.cohortId = sc.rowId)
15+
16+
GROUP BY sc.rowId, sc.labelOrName, sc.studyId.description, sc.studyId.labelOrName
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<query xmlns="http://labkey.org/data/xml/query">
2+
<metadata>
3+
<tables xmlns="http://labkey.org/data/xml">
4+
<table tableName="studyCohorts" tableDbType="TABLE" useColumnOrder="false">
5+
<columns>
6+
<column columnName="cohortsSummary" wrappedColumnName="rowId">
7+
<isUnselectable>true</isUnselectable>
8+
<shownInInsertView>false</shownInInsertView>
9+
<shownInUpdateView>false</shownInUpdateView>
10+
<columnTitle>Summary Information</columnTitle>
11+
<fk>
12+
<fkDbSchema>studies</fkDbSchema>
13+
<fkTable>studyCohortSummary</fkTable>
14+
<fkColumnName>rowId</fkColumnName>
15+
</fk>
16+
</column>
17+
</columns>
18+
</table>
19+
</tables>
20+
</metadata>
21+
</query>
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<customView xmlns="http://labkey.org/data/xml/queryCustomView" hidden="false" canOverride="false">
2+
<columns>
3+
<column name="rowId"/>
4+
<column name="studyId"/>
5+
<column name="studyId/description">
6+
<properties>
7+
<property name="columnTitle" value="Study Description"/>
8+
</properties>
9+
</column>
10+
<column name="cohortName"/>
11+
<column name="label"/>
12+
<column name="category"/>
13+
<column name="description"/>
14+
<column name="isControlGroup"/>
15+
<column name="sortOrder"/>
16+
<column name="cohortsSummary/numAnimals"/>
17+
<column name="cohortsSummary/sexes"/>
18+
<column name="cohortsSummary/challenges"/>
19+
<column name="cohortsSummary/artInitiationsDPI"/>
20+
<column name="cohortsSummary/interventions"/>
21+
</columns>
22+
<sorts>
23+
<sort column="studyId/studyName" descending="false"/>
24+
<sort column="sortOrder" descending="false"/>
25+
<sort column="cohortName" descending="false"/>
26+
</sorts>
27+
</customView>

SivStudies/src/org/labkey/sivstudies/etl/PerformManualIdrStepsTask.java

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,9 @@ public RecordedActionSet run(@NotNull PipelineJob pipelineJob) throws PipelineJo
4141
updateVaccineInformation(pipelineJob);
4242
updateChallengeAnchorDates(pipelineJob);
4343
updateArtInitiationAnchorDates(pipelineJob);
44+
updateJS46();
45+
46+
// TODO: Set other cohort-by-cohort params
4447

4548
return new RecordedActionSet();
4649
}
@@ -283,4 +286,44 @@ public void setContainerUser(ContainerUser containerUser)
283286
{
284287
_containerUser = containerUser;
285288
}
289+
290+
private void updateJS46() throws PipelineJobException
291+
{
292+
updateTreatmentRecords("JS46", new SimpleFilter(FieldKey.fromString("treatment"), "SIV - Unknown"), Map.of("treatment", "SIVmac239", "route", "IV"));
293+
}
294+
295+
private void updateTreatmentRecords(String cohortName, SimpleFilter treatmentFilter, final Map<String, Object> additionalProps) throws PipelineJobException
296+
{
297+
TableInfo assignments = QueryService.get().getUserSchema(_containerUser.getUser(), _containerUser.getContainer(), "study").getTable("assignment");
298+
List<String> ids = new TableSelector(assignments, PageFlowUtil.set("Id"), new SimpleFilter(FieldKey.fromString("study"), cohortName), null).getArrayList(String.class);
299+
treatmentFilter.addCondition(FieldKey.fromString("Id"), ids, CompareType.IN);
300+
301+
TableInfo treatments = QueryService.get().getUserSchema(_containerUser.getUser(), _containerUser.getContainer(), "study").getTable("treatments");
302+
List<Map<String, Object>> toUpdate = new ArrayList<>();
303+
new TableSelector(treatments, PageFlowUtil.set("lsid"), treatmentFilter, null).forEachMap(rs -> {
304+
Map<String, Object> toAdd = new CaseInsensitiveHashMap<>(rs);
305+
toAdd.putAll(additionalProps);
306+
toUpdate.add(toAdd);
307+
});
308+
309+
if (!toUpdate.isEmpty())
310+
{
311+
try
312+
{
313+
BatchValidationException bve = new BatchValidationException();
314+
315+
List<Map<String, Object>> oldKeys = toUpdate.stream().map(x -> (Map<String, Object>)new CaseInsensitiveHashMap<>(Map.of("lsid", x.get("lsid")))).toList();
316+
treatments.getUpdateService().updateRows(_containerUser.getUser(), _containerUser.getContainer(), toUpdate, oldKeys, bve, null, null);
317+
318+
if (bve.hasErrors())
319+
{
320+
throw bve;
321+
}
322+
}
323+
catch (SQLException | BatchValidationException | QueryUpdateServiceException | InvalidKeyException e)
324+
{
325+
throw new PipelineJobException(e);
326+
}
327+
}
328+
}
286329
}

0 commit comments

Comments
 (0)