From 883ff794b523655584afbfcffcc2a7e13a554dac Mon Sep 17 00:00:00 2001 From: ankurjuneja Date: Sat, 30 Sep 2023 08:24:13 -0700 Subject: [PATCH 1/2] Issue 47265 - Data validation queries for dams and sires --- .../queries/study/animalIdsAsDamAndSire.sql | 14 +++++++ .../queries/study/parentsDifferentSpecies.sql | 20 ++++++++++ .../queries/study/parentsIncorrectGender.sql | 20 ++++++++++ .../study/parentsYoungerThanOffspring.sql | 16 ++++++++ .../views/ehrDataValidationReport.html | 37 +++++++++++++++++++ 5 files changed, 107 insertions(+) create mode 100644 ehr/resources/queries/study/animalIdsAsDamAndSire.sql create mode 100644 ehr/resources/queries/study/parentsDifferentSpecies.sql create mode 100644 ehr/resources/queries/study/parentsIncorrectGender.sql create mode 100644 ehr/resources/queries/study/parentsYoungerThanOffspring.sql create mode 100644 ehr/resources/views/ehrDataValidationReport.html diff --git a/ehr/resources/queries/study/animalIdsAsDamAndSire.sql b/ehr/resources/queries/study/animalIdsAsDamAndSire.sql new file mode 100644 index 000000000..4943ca5ab --- /dev/null +++ b/ehr/resources/queries/study/animalIdsAsDamAndSire.sql @@ -0,0 +1,14 @@ + +SELECT DISTINCT dam AS Id, + gender, + species +FROM demographics +WHERE dam IN (SELECT sire FROM demographics) + +UNION + +SELECT DISTINCT sire AS Id, + gender, + species +FROM demographics +WHERE sire IN (SELECT dam FROM demographics); diff --git a/ehr/resources/queries/study/parentsDifferentSpecies.sql b/ehr/resources/queries/study/parentsDifferentSpecies.sql new file mode 100644 index 000000000..7c2617fea --- /dev/null +++ b/ehr/resources/queries/study/parentsDifferentSpecies.sql @@ -0,0 +1,20 @@ +SELECT * +FROM ( +SELECT + d1.Id, + d1.gender, + d1.species, + d2.Id as damId, + d2.species as damSpecies, + d3.Id as sireId, + d3.species as sireSpecies, + CASE WHEN (d2.species IS NOT NULL AND d1.species != d2.species) AND + (d3.species IS NOT NULL AND d1.species != d3.species) + THEN TRUE + ELSE FALSE + END as parentSpeciesMismatch +FROM demographics d1 +LEFT JOIN demographics d2 ON d1.dam = d2.Id +LEFT JOIN demographics d3 ON d1.sire = d3.Id +) d4 +WHERE d4.parentSpeciesMismatch = TRUE \ No newline at end of file diff --git a/ehr/resources/queries/study/parentsIncorrectGender.sql b/ehr/resources/queries/study/parentsIncorrectGender.sql new file mode 100644 index 000000000..711f74fed --- /dev/null +++ b/ehr/resources/queries/study/parentsIncorrectGender.sql @@ -0,0 +1,20 @@ +SELECT * +FROM ( +SELECT + d1.Id, + d1.gender, + d1.species, + d2.Id as damId, + d2.gender as damGender, + d3.Id as sireId, + d3.gender as sireGender, + CASE WHEN (d2.gender IS NOT NULL AND d2.gender.meaning NOT IN ('FEMALE', 'UNKNOWN', 'UNDETERMINED')) OR + (d3.gender IS NOT NULL AND d3.gender.meaning NOT IN ('MALE', 'UNKNOWN', 'UNDETERMINED')) + THEN TRUE + ELSE FALSE + END as parentSpeciesMismatch +FROM demographics d1 +LEFT JOIN demographics d2 ON d1.dam = d2.Id +LEFT JOIN demographics d3 ON d1.sire = d3.Id + ) d4 +WHERE d4.parentSpeciesMismatch = TRUE \ No newline at end of file diff --git a/ehr/resources/queries/study/parentsYoungerThanOffspring.sql b/ehr/resources/queries/study/parentsYoungerThanOffspring.sql new file mode 100644 index 000000000..5c35edeae --- /dev/null +++ b/ehr/resources/queries/study/parentsYoungerThanOffspring.sql @@ -0,0 +1,16 @@ +SELECT * +FROM ( + SELECT + dem.Id, + dem.gender, + dem.species, + dem.birth, + dem.dam, + damDem.birth as damBirth, + dem.sire, + sireDem.birth as sireBirth + FROM demographics dem + LEFT JOIN demographics damDem ON dem.dam = damDem.Id + LEFT JOIN demographics sireDem ON dem.sire = sireDem.Id + ) t +WHERE (t.birth <= t.damBirth OR t.birth <= t.sireBirth) \ No newline at end of file diff --git a/ehr/resources/views/ehrDataValidationReport.html b/ehr/resources/views/ehrDataValidationReport.html new file mode 100644 index 000000000..add65f512 --- /dev/null +++ b/ehr/resources/views/ehrDataValidationReport.html @@ -0,0 +1,37 @@ +
+
+
+
+ + \ No newline at end of file From bc04aba3f7e6d6670ccd380b67e776485ce63710 Mon Sep 17 00:00:00 2001 From: Ankur Juneja Date: Sun, 1 Oct 2023 08:34:06 -0700 Subject: [PATCH 2/2] Apply suggestions from code review Co-authored-by: Marty Pradere --- ehr/resources/queries/study/parentsIncorrectGender.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ehr/resources/queries/study/parentsIncorrectGender.sql b/ehr/resources/queries/study/parentsIncorrectGender.sql index 711f74fed..c014d7b04 100644 --- a/ehr/resources/queries/study/parentsIncorrectGender.sql +++ b/ehr/resources/queries/study/parentsIncorrectGender.sql @@ -8,8 +8,8 @@ SELECT d2.gender as damGender, d3.Id as sireId, d3.gender as sireGender, - CASE WHEN (d2.gender IS NOT NULL AND d2.gender.meaning NOT IN ('FEMALE', 'UNKNOWN', 'UNDETERMINED')) OR - (d3.gender IS NOT NULL AND d3.gender.meaning NOT IN ('MALE', 'UNKNOWN', 'UNDETERMINED')) + CASE WHEN (d2.gender IS NOT NULL AND upper(d2.gender.meaning) NOT IN ('FEMALE', 'UNKNOWN', 'UNDETERMINED')) OR + (d3.gender IS NOT NULL AND upper(d3.gender.meaning) NOT IN ('MALE', 'UNKNOWN', 'UNDETERMINED')) THEN TRUE ELSE FALSE END as parentSpeciesMismatch