diff --git a/onprc_ehr/resources/queries/study/processingSerology.sql b/onprc_ehr/resources/queries/study/processingSerology.sql
index 20ebcb2e7..eb5f91b43 100644
--- a/onprc_ehr/resources/queries/study/processingSerology.sql
+++ b/onprc_ehr/resources/queries/study/processingSerology.sql
@@ -26,6 +26,12 @@ SELECT
t.isPCRRequired,
t.isPCRCurrent,
+ t.lastBchem,
+ t.daysSinceBchem,
+ t.isBchemRequired,
+ t.isBchemCurrent,
+
+
CASE
WHEN (t.isSRVRequired = true AND t.isSRVCurrent = false) THEN 4
ELSE 0
@@ -36,6 +42,61 @@ SELECT
ELSE 0
END as PCRbloodVol,
+ CASE
+ WHEN (t.isESPFRequired = true AND t.isESPFCurrent = false ) THEN 4
+ ELSE 0
+ END as ESPFbloodVol,
+
+ -----CBC
+ CASE
+ WHEN (t.isCBCRequired1 = true AND t.isCBCCurrent1 = false ) OR (t.isCBCRequired2 = true AND t.isCBCCurrent2 = false ) THEN 1
+ ELSE 0
+ END as CBCbloodVol1,
+
+
+ CASE
+ WHEN (t.isCBCRequired3 = true AND t.isCBCCurrent3 = false ) THEN 1
+ ELSE 0
+ END as CBCbloodVol3,
+
+ CASE
+ WHEN (t.isCBCRequired4 = true AND t.isCBCCurrent4 = false ) THEN 1
+ ELSE 0
+ END as CBCbloodVol4,
+
+ CASE
+ WHEN (t.isCBCRequired5 = true AND t.isCBCCurrent5 = false ) THEN 1
+ ELSE 0
+ END as CBCbloodVol5,
+
+
+
+ -----Comprehensive Chemistry
+ CASE
+ WHEN (t.isCChemRequired1 = true AND t.isCChemCurrent1 = false ) THEN 2
+ ELSE 0
+ END as CChembloodVol1,
+
+ CASE
+ WHEN (t.isCChemRequired2 = true AND t.isCChemCurrent2 = false ) THEN 2
+ ELSE 0
+ END as CChembloodVol2,
+
+ CASE
+ WHEN (t.isCChemRequired3 = true AND t.isCChemCurrent3 = false ) THEN 2
+ ELSE 0
+ END as CChembloodVol3,
+
+ CASE
+ WHEN (t.isCChemRequired4 = true AND t.isCChemCurrent4 = false ) THEN 2
+ ELSE 0
+ END as CChembloodVol4,
+
+ -----Basic Chemistry
+ CASE
+ WHEN (t.isBChemRequired = true AND t.isBChemCurrent = false ) THEN 2
+ ELSE 0
+ END as BchembloodVol,
FROM (
@@ -64,7 +125,158 @@ SELECT
CASE
WHEN (d.Id.age.ageInDays > 180 ) THEN true
ELSE false
- END as isPCRRequired
+ END as isPCRRequired,
+
+ espf.lastDate as lastESPF,
+ timestampdiff('SQL_TSI_DAY', espf.lastDate, now()) as daysSinceESPF,
+ CASE
+ WHEN (year(now()) = year(espf.lastDate) AND (timestampdiff('SQL_TSI_DAY', espf.lastDate, now()) > 180) ) THEN true
+ ELSE false
+ END as isESPFCurrent,
+
+ CASE
+ WHEN (d.Id.age.ageInDays > 180 ) THEN true
+ ELSE false
+ END as isESPFRequired,
+
+
+ ------ All CBC Sections
+
+ cbc.lastDate as lastCBC1,
+ timestampdiff('SQL_TSI_DAY', cbc.lastDate, now()) as daysSinceCBC1,
+ CASE
+ WHEN (year(now()) = year(cbc.lastDate) AND (timestampdiff('SQL_TSI_DAY', cbc.lastDate, now()) > 165 )AND d.Id.curLocation.area in ('Corrals', 'Shelters', 'PENS' ) ) THEN true
+ ELSE false
+ END as isCBCCurrent1,
+
+ CASE
+ WHEN (d.Id.age.ageInDays > 20 ) THEN true
+ ELSE false
+ END as isCBCRequired1,
+
+ cbc.lastDate as lastCBC2,
+ timestampdiff('SQL_TSI_DAY', cbc.lastDate, now()) as daysSinceCBC2,
+ CASE
+ WHEN (year(now()) = year(cbc.lastDate) AND (timestampdiff('SQL_TSI_DAY', cbc.lastDate, now()) > 340) AND d.Id.curLocation.area in ('Corrals', 'Shelters', 'PENS' ) AND (flg.Id is not null) ) THEN true
+ ELSE false
+ END as isCBCCurrent2,
+
+ CASE
+ WHEN (d.Id.age.ageInDays > 180 ) THEN true
+ ELSE false
+ END as isCBCRequired2,
+
+ cbc.lastDate as lastCBC3,
+ timestampdiff('SQL_TSI_DAY', cbc.lastDate, now()) as daysSinceCBC3,
+ CASE
+ WHEN (year(now()) = year(cbc.lastDate) AND (timestampdiff('SQL_TSI_DAY', cbc.lastDate, now()) > 340) AND d.Id.curLocation.area in ('Corrals', 'Shelters', 'PENS' ) ) THEN true
+ ELSE false
+ END as isCBCCurrent3,
+
+ CASE
+ WHEN (d.Id.age.ageInDays > 12 ) THEN true
+ ELSE false
+ END as isCBCRequired3,
+
+
+ cbc.lastDate as lastCBC4,
+ timestampdiff('SQL_TSI_DAY', cbc.lastDate, now()) as daysSinceCBC4,
+ CASE
+ WHEN ( cbc.lastDate is null AND d.Id.curLocation.area in ('Corrals', 'Shelters', 'PENS' ) ) THEN true
+ ELSE false
+ END as isCBCCurrent4,
+
+ CASE
+ WHEN (d.Id.age.ageInDays > 6 ) THEN true
+ ELSE false
+ END as isCBCRequired4,
+
+
+ cbc.lastDate as lastCBC5,
+ timestampdiff('SQL_TSI_DAY', cbc.lastDate, now()) as daysSinceCBC5,
+ CASE
+ WHEN (year(now()) = year(cbc.lastDate) AND (timestampdiff('SQL_TSI_DAY', cbc.lastDate, now()) > 180) AND (nts.Id is not null) ) THEN true
+ ELSE false
+ END as isCBCCurrent5,
+
+ CASE
+ WHEN (d.Id.age.ageInDays > 180 ) THEN true
+ ELSE false
+ END as isCBCRequired5,
+
+
+
+ ----- All Comp Chemistry sections
+
+
+ cchem.lastDate as lastCChem1,
+ timestampdiff('SQL_TSI_DAY', cchem.lastDate, now()) as daysSinceCChem1,
+ CASE
+ WHEN ( ( (year(now()) = year(cchem.lastDate) AND (timestampdiff('SQL_TSI_DAY', cchem.lastDate, now()) > 165)) OR cchem.lastDate is null ) AND d.Id.curLocation.area in ('Corrals', 'Shelters', 'PENS' ) ) THEN true
+ ELSE false
+ END as isCChemCurrent1,
+
+ CASE
+ WHEN (d.Id.age.ageInDays > 20 ) THEN true
+ ELSE false
+ END as isCChemRequired1,
+
+
+ cchem.lastDate as lastCChem2,
+ timestampdiff('SQL_TSI_DAY', cchem.lastDate, now()) as daysSinceCChem2,
+ CASE
+ WHEN ( ( (year(now()) = year(cchem.lastDate) AND (timestampdiff('SQL_TSI_DAY', cchem.lastDate, now()) > 340) ) OR cchem.lastDate is null ) AND d.Id.curLocation.area in ('Corrals', 'Shelters', 'PENS' ) AND (flg.Id is not null) ) THEN true
+ ELSE false
+ END as isCChemCurrent2,
+
+ CASE
+ WHEN (d.Id.age.ageInDays > 180 ) THEN true
+ ELSE false
+ END as isCChemRequired2,
+
+ cchem.lastDate as lastCChem3,
+ timestampdiff('SQL_TSI_DAY', cchem.lastDate, now()) as daysSinceCChem3,
+ CASE
+ WHEN ( year(now()) = year(cchem.lastDate) AND (timestampdiff('SQL_TSI_DAY', cchem.lastDate, now()) > 180) AND d.Id.curLocation.area in ('Corrals', 'Shelters', 'PENS' ) ) THEN true
+ ELSE false
+ END as isCChemCurrent3,
+
+ CASE
+ WHEN (d.Id.age.ageInDays >= 18 ) THEN true
+ ELSE false
+ END as isCChemRequired3,
+
+ cchem.lastDate as lastCChem4,
+ timestampdiff('SQL_TSI_DAY', cchem.lastDate, now()) as daysSinceCChem4,
+ CASE
+ WHEN ( ( year(now()) = year(cchem.lastDate) AND (timestampdiff('SQL_TSI_DAY', cchem.lastDate, now()) > 180 )) AND (nts.Id is not null ) ) THEN true
+ ELSE false
+ END as isCChemCurrent4,
+
+ CASE
+ WHEN (d.Id.age.ageInDays > 180 ) THEN true
+ ELSE false
+ END as isCChemRequired4,
+
+
+ ------------- Basic Chemistry
+
+
+ bchem.lastDate as lastBChem,
+ timestampdiff('SQL_TSI_DAY', bchem.lastDate, now()) as daysSinceBChem,
+ CASE
+ WHEN ( ( year(now()) = year(bchem.lastDate) AND (timestampdiff('SQL_TSI_DAY', bchem.lastDate, now()) > 340 ) ) AND (d.Id.curLocation.area in ('Corrals', 'Shelters', 'PENS' ) ) ) THEN true
+ ELSE false
+ END as isBChemCurrent,
+
+ CASE
+ WHEN (d.Id.age.ageInDays >= 6 AND d.Id.age.ageInDays < 18 ) THEN true
+ ELSE false
+ END as isBChemRequired
+
+
+
+
FROM study.demographics d
@@ -78,6 +290,16 @@ LEFT JOIN (
) srv ON (srv.id = d.id)
+LEFT JOIN (
+ SELECT
+ k.id,
+ max(k.date) as lastDate
+ FROM study.blood k
+ WHERE (k.additionalservices = 'ESPF Surveillance - Semiannual')
+ GROUP BY k.id
+
+) espf ON (espf.id = d.id)
+
LEFT JOIN (
SELECT
b.id,
@@ -88,6 +310,60 @@ LEFT JOIN (
) pcr ON (pcr.id = d.id)
+LEFT JOIN (
+ SELECT
+ j.id,
+ max(j.date) as lastDate
+ FROM study.blood j
+ WHERE j.additionalservices like 'CBC with automated differential'
+ GROUP BY j.id
+
+) cbc ON (cbc.id = d.id)
+
+LEFT JOIN (
+ SELECT
+ m.id,
+ max(m.date) as lastDate
+ FROM study.blood m
+ WHERE m.additionalservices like 'Comprehensive Chemistry panel in-house'
+ GROUP BY m.id
+
+) cchem ON (cchem.id = d.id)
+
+
+LEFT JOIN (
+ SELECT
+ t.id,
+ max(t.date) as lastDate
+ FROM study.blood t
+ WHERE t.additionalservices like 'Basic Chemistry Panel'
+ GROUP BY t.id
+
+) bchem ON (bchem.id = d.id)
+
+LEFT JOIN (
+ SELECT
+ n.id,
+ max(n.date) as lastDate
+ FROM study.flags n
+ WHERE n.category ='Behavior Flag' And n.value = 'Socially important'
+ And n.enddate is null
+ GROUP BY n.id
+
+) flg ON (flg.id = d.id)
+
+
+LEFT JOIN (
+ SELECT
+ p.id,
+ max(p.date) as lastDate
+ FROM study.flags p
+ WHERE p.category ='Notes Pertaining to DAR' And p.value = 'Assignment pool'
+ And p.enddate is null
+ GROUP BY p.id
+
+) nts ON (nts.id = d.id)
+
WHERE d.calculated_status = 'Alive'
diff --git a/onprc_reports/resources/queries/study/processingBloodDraws.query.xml b/onprc_reports/resources/queries/study/processingBloodDraws.query.xml
index 32b18373b..2a5774c3e 100644
--- a/onprc_reports/resources/queries/study/processingBloodDraws.query.xml
+++ b/onprc_reports/resources/queries/study/processingBloodDraws.query.xml
@@ -22,12 +22,24 @@
PCR PTT (mL)
+
+ ESPF PTT (mL)
+
DNA Pink/PTT (mL)
Serology RTT (mL)
+
+ CBC PTT (mL)
+
+
+ COMP Chem RTT (mL)
+
+
+ BASIC Chem RTT (mL)
+
Genetics Blood Vol (mL)
diff --git a/onprc_reports/resources/queries/study/processingBloodDraws.sql b/onprc_reports/resources/queries/study/processingBloodDraws.sql
index 68eedb48e..8a5259f98 100644
--- a/onprc_reports/resources/queries/study/processingBloodDraws.sql
+++ b/onprc_reports/resources/queries/study/processingBloodDraws.sql
@@ -10,15 +10,35 @@ SELECT
End as PCRBloodVolume,
s.srvBloodVol as serologyBloodVol,
+
+ Case when (a.Id IS NOT NULL) And (s.ESPFBloodVol > 0 ) then 4
+ ELSE
+ 0
+ End as ESPFBloodVol,
+
+
+ ( coalesce(s.CBCbloodVol1,0) + coalesce(s.CBCbloodVol2,0) + coalesce(s.CBCbloodVol3,0) + coalesce(s.CBCbloodVol4,0) + coalesce(s.CBCbloodVol5,0) ) as totalCBCVol,
+ (coalesce(s.CChembloodVol1,0) + coalesce(s.CChembloodVol2,0) + coalesce(s.CChembloodVol3,0) + coalesce(s.CChembloodVol4,0) ) as totalCompChemBloodVol,
+ (coalesce(s.BChembloodVol,0) ) as BasicChemBloodVol,
+
g.parentageBloodDrawVol,
g.mhcBloodDrawVol,
g.dnaBloodDrawVol,
g.totalBloodDrawVol as geneticsBloodVol,
- coalesce(s.srvBloodVol, 0) + Case when (a.Id IS NOT NULL) And (s.pcrbloodVol > 0 ) then 2
+ coalesce(s.srvBloodVol, 0) +
+ Case when (a.Id IS NOT NULL) And (s.pcrbloodVol > 0 ) then 2
ELSE
0
- End + coalesce(g.totalBloodDrawVol, 0) as totalBloodDrawVol,
+ End +
+ Case when (a.Id IS NOT NULL) And (s.ESPFBloodVol > 0 ) then 4
+ ELSE
+ 0
+ End +
+ coalesce(s.CBCbloodVol1,0) + coalesce(s.CBCbloodVol3,0) + coalesce(s.CBCbloodVol4,0) + coalesce(s.CBCbloodVol5,0) +
+ coalesce(s.CChembloodVol1,0) + coalesce(s.CChembloodVol2,0) + coalesce(s.CChembloodVol3,0) + coalesce(s.CChembloodVol4,0) +
+ coalesce(s.BChembloodVol,0) +
+ coalesce(g.totalBloodDrawVol, 0) as totalBloodDrawVol,
(select k.room from study.housing k where k.Id =d.Id And k.enddate is null) as currentlocationroom,
(select coalesce(k.cage, ' ') from study.housing k where k.Id =d.Id And k.enddate is null) as currentlocationcage,
diff --git a/onprc_reports/resources/queries/study/processingBloodDraws/.qview.xml b/onprc_reports/resources/queries/study/processingBloodDraws/.qview.xml
index 7921a2716..0bc0ab9e9 100644
--- a/onprc_reports/resources/queries/study/processingBloodDraws/.qview.xml
+++ b/onprc_reports/resources/queries/study/processingBloodDraws/.qview.xml
@@ -8,6 +8,10 @@
+
+
+
+