Skip to content

Commit 444cbd7

Browse files
committed
Improve PVL validation
1 parent 3e1bed3 commit 444cbd7

2 files changed

Lines changed: 20 additions & 1 deletion

File tree

SivStudies/resources/queries/study/viralloads.query.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
</column>
1111
<column columnName="sampleType">
1212
<columnTitle>Sample Type</columnTitle>
13+
<nullable>false</nullable>
1314
<fk>
1415
<fkDbSchema>studies</fkDbSchema>
1516
<fkTable>vl_sample_types</fkTable>
@@ -28,6 +29,7 @@
2829
</column>
2930
<column columnName="result">
3031
<columnTitle>Result</columnTitle>
32+
<nullable>false</nullable>
3133
</column>
3234
<column columnName="units">
3335
<columnTitle>Units</columnTitle>

SivStudies/src/org/labkey/sivstudies/query/ViralLoadsTriggerFactory.java

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,23 @@ private void handlePVL(@Nullable Map<String, Object> row, Container c, Validatio
6060
return;
6161
}
6262

63+
if ("Plasma".equalsIgnoreCase(String.valueOf(row.get("sampleType"))) & row.get("units") == null)
64+
{
65+
row.put("units", "Copies/mL");
66+
}
67+
68+
// Enforce consistent case:
69+
if ("Copies/mL".equalsIgnoreCase(String.valueOf(row.get("units"))))
70+
{
71+
row.put("units", "Copies/mL");
72+
}
73+
74+
inspectResultValue(row, errors);
75+
76+
}
77+
78+
private void inspectResultValue(@NotNull Map<String, Object> row, ValidationException errors)
79+
{
6380
if (row.get("result") == null || NumberUtils.isCreatable(row.get("result").toString()))
6481
{
6582
return;
@@ -73,7 +90,7 @@ private void handlePVL(@Nullable Map<String, Object> row, Container c, Validatio
7390
}
7491
else if (val.toLowerCase().startsWith("below"))
7592
{
76-
StringUtils.replaceIgnoreCase(val, "below ", "");
93+
val = StringUtils.replaceIgnoreCase(val, "below ", "");
7794
if (NumberUtils.isCreatable(val))
7895
{
7996
row.put("result", val);

0 commit comments

Comments
 (0)