Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<query xmlns="http://labkey.org/data/xml/query">
<metadata>
<tables xmlns="http://labkey.org/data/xml">
<table tableName="parentsWrongGenderOrSpecies" tableDbType="NOT_IN_DB">
<tableTitle>Parentage Records With Mismatched Gender or Species</tableTitle>
<pkColumnName>lsid</pkColumnName>
<updateUrl>/ehr/manageRecord.view?schemaName=study&amp;queryName=${queryName}&amp;keyField=lsid&amp;key=${lsid}&amp;update=1</updateUrl>
<columns>
<column columnName="Id">

</column>
<column columnName="parentGender">
<columnTitle>Parent Gender</columnTitle>
</column>
<column columnName="parentSpecies">
<columnTitle>Parent Species</columnTitle>
</column>
<column columnName="lsid">
<isHidden>true</isHidden>
</column>
<column columnName="queryName">
<isHidden>true</isHidden>
</column>
</columns>
</table>
</tables>
</metadata>
</query>
59 changes: 59 additions & 0 deletions onprc_ehr/resources/queries/study/parentsWrongGenderOrSpecies.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
SELECT
p.Id,
p.date,
p.Id.demographics.species,
p.relationship,
p.parent,
p.parent.demographics.gender as parentGender,
p.parent.demographics.species as parentSpecies,
p.lsid,
'Parentage' as queryName
FROM study.parentage p

WHERE p.qcstate.publicdata = true AND (
-- Gender:
(p.parent.demographics.gender.origgender IS NOT NULL AND p.relationship = 'Sire' AND p.parent.demographics.gender.origgender != 'm') OR
(p.parent.demographics.gender.origgender IS NOT NULL AND p.relationship = 'Dam' AND p.parent.demographics.gender.origgender != 'f') OR
(p.parent.demographics.gender.origgender IS NOT NULL AND p.relationship = 'Foster Dam' AND p.parent.demographics.gender.origgender != 'f') OR

-- Species
(p.Id.demographics.species IS NOT NULL AND p.parent.demographics.species IS NOT NULL AND p.Id.demographics.species != p.parent.demographics.species)
)

UNION ALL

SELECT
p.Id,
p.date,
p.Id.demographics.species,
'dam' as relationship,
p.dam as parent,
d.gender as parentGender,
d.species as parentSpecies,
p.lsid,
'Birth' as queryName
FROM study.birth p
JOIN study.demographics d on (p.dam = d.Id)
WHERE p.qcstate.publicdata = true AND (
(d.gender.origgender IS NOT NULL AND d.gender.origgender != 'f') OR
(p.Id.demographics.species IS NOT NULL AND d.species IS NOT NULL AND p.Id.demographics.species != d.species)
) AND p.date >= '2000-01-01'

UNION ALL

SELECT
p.Id,
p.date,
p.Id.demographics.species,
'sire' as relationship,
p.sire as parent,
d.gender as parentGender,
d.species as parentSpecies,
p.lsid,
'Birth' as queryName
FROM study.birth p
JOIN study.demographics d on (p.sire = d.Id)
WHERE p.qcstate.publicdata = true AND (
(d.gender.origgender IS NOT NULL AND d.gender.origgender != 'm') OR
(p.Id.demographics.species IS NOT NULL AND d.species IS NOT NULL AND p.Id.demographics.species != d.species)
) AND p.date >= '2000-01-01'
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<query xmlns="http://labkey.org/data/xml/query">
<metadata>
<tables xmlns="http://labkey.org/data/xml">
<table tableName="parentsYoungerThanOffspring" tableDbType="NOT_IN_DB">
<tableTitle>Parentage Records With Parents Younger Than Offspring</tableTitle>
<pkColumnName>lsid</pkColumnName>
<updateUrl>/ehr/manageRecord.view?schemaName=study&amp;queryName=${queryName}&amp;keyField=lsid&amp;key=${lsid}&amp;update=1</updateUrl>
<columns>
<column columnName="Id">

</column>
<column columnName="parentBirth">
<columnTitle>Parent Birth</columnTitle>
</column>
<column columnName="lsid">
<isHidden>true</isHidden>
</column>
<column columnName="queryName">
<isHidden>true</isHidden>
</column>
</columns>
</table>
</tables>
</metadata>
</query>
50 changes: 50 additions & 0 deletions onprc_ehr/resources/queries/study/parentsYoungerThanOffspring.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
SELECT
p.Id,
p.parent,
p.relationship,
p.method,
p.Id.demographics.birth,
p.parent.demographics.birth as parentBirth,
p.lsid,
'Parentage' as queryName

FROM study.parentage p
WHERE
p.qcstate.publicdata = true AND
(p.Id.demographics.birth IS NOT NULL AND p.parent.demographics.birth IS NOT NULL AND p.Id.demographics.birth <= p.parent.demographics.birth)

UNION ALL

SELECT
p.Id,
p.dam as parent,
'Dam' as relationship,
'Observed' as method,
p.Id.demographics.birth,
d.birth as parentBirth,
p.lsid,
'Birth' as queryName

FROM study.birth p
JOIN study.demographics d on (p.dam = d.Id)
WHERE
p.qcstate.publicdata = true AND
(p.Id.demographics.birth IS NOT NULL AND d.birth IS NOT NULL AND p.Id.demographics.birth <= d.birth)

UNION ALL

SELECT
p.Id,
p.sire as parent,
'Sire' as relationship,
'Observed' as method,
p.Id.demographics.birth,
d.birth as parentBirth,
p.lsid,
'Birth' as queryName

FROM study.birth p
JOIN study.demographics d on (p.sire = d.Id)
WHERE
p.qcstate.publicdata = true AND
(p.Id.demographics.birth IS NOT NULL AND d.birth IS NOT NULL AND p.Id.demographics.birth <= d.birth)
Original file line number Diff line number Diff line change
Expand Up @@ -957,6 +957,27 @@ protected void birthRecordsWithoutDemographics(final Container c, User u, final
}
}

protected void pedigreeIssues(final Container c, User u, final StringBuilder msg)
{
TableSelector ts = new TableSelector(getStudySchema(c, u).getTable("parentsYoungerThanOffspring"), Collections.singleton(getStudy(c).getSubjectColumnName()));
long count = ts.getRowCount();
if (count > 0)
{
msg.append("<b>WARNING: There are " + count + " parentage records where the parent is younger than the offspring.</b><br>\n");
msg.append("<p><a href='" + getExecuteQueryUrl(c, "study", "parentsYoungerThanOffspring", null) + "'>Click here to view them</a><br>\n\n");
msg.append("<hr>\n\n");
}

ts = new TableSelector(getStudySchema(c, u).getTable("parentsWrongGenderOrSpecies"), Collections.singleton(getStudy(c).getSubjectColumnName()));
count = ts.getRowCount();
if (count > 0)
{
msg.append("<b>WARNING: There are " + count + " parentage records listed with the wrong gender or species.</b><br>\n");
msg.append("<p><a href='" + getExecuteQueryUrl(c, "study", "parentsWrongGenderOrSpecies", null) + "'>Click here to view them</a><br>\n\n");
msg.append("<hr>\n\n");
}
}

protected void incompleteBirthRecords(final Container c, User u, final StringBuilder msg)
{
SimpleFilter filter = new SimpleFilter(new SimpleFilter.OrClause(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ public String getMessageBodyHTML(Container c, User u)
offspringWithMother(c, u, msg, 250);
offspringWithMother(c, u, msg, 365);
incompleteBirthRecords(c, u, msg);
pedigreeIssues(c, u, msg);

//only send if there are alerts
if (msg.length() > 0)
Expand Down