This is an old revision of the document!
Dashboard
These queries generally need to be set up by an administrator but have been included here as a reference to demonstrate some of the mSupply cold chain data that can be made available on the mSupply Dashboard.
Sensor Graph
Query
WITH temp AS ( SELECT s.name, CONCAT(TO_CHAR(date,'YYYY-MM-DD'),' ', TO_CHAR(time,'HH24:MI:SS'))::timestamptz AS log_datetime, tl.temperature FROM temperature_log tl JOIN sensor s ON tl.sensor_id = s.id WHERE CONCAT(TO_CHAR(date,'YYYY-MM-DD'),' ', TO_CHAR(time,'HH24:MI:SS'))::timestamptz >= $__timeFrom() ) SELECT $__time(log_datetime), name, temperature FROM temp ORDER BY log_datetime
Unacknowledged Breaches
Query
WITH breaches AS ( SELECT store_id, location_id, sensor_id, s.name, SUM(CASE WHEN type = 'HOT_CONSECUTIVE' or type = 'COLD_CONSECUTIVE' then 1 else 0 end) AS count_consecutive FROM temperature_breach JOIN sensor s ON s.id = temperature_breach.sensor_id WHERE CONCAT(TO_CHAR(start_date,'YYYY-MM-DD'),' ', TO_CHAR(start_time,'HH24:MI:SS'))::timestamp >= $__timeFrom() AND acknowledged='false' GROUP BY store_id, location_id,sensor_id, s.name) SELECT COUNT(*) FROM breaches
Batches affected
Query
WITH batch_count AS ( SELECT temperature_breach.store_id, temperature_breach.location_id, sensor_id, s.name, il.id, SUM(CASE WHEN type = 'HOT_CONSECUTIVE' or type = 'COLD_CONSECUTIVE' then 1 else 0 end) AS count_consecutive FROM temperature_breach JOIN sensor s ON s.id = temperature_breach.sensor_id JOIN item_line il ON il.location_id = temperature_breach.location_id WHERE CONCAT(TO_CHAR(start_date,'YYYY-MM-DD'),' ', TO_CHAR(start_time,'HH24:MI:SS'))::timestamp >= $__timeFrom() AND acknowledged='false' GROUP BY temperature_breach.store_id, temperature_breach.location_id,sensor_id, s.name, il.id ) SELECT COUNT(*) FROM batch_count
Sensor battery life
Query
select sum(CASE WHEN batterylevel < 20 then 1 else 0 end) as "Low battery", sum(CASE WHEN batterylevel < 50 then 1 else 0 end) as "Battery to be replaced within month", sum(CASE WHEN batterylevel >= 50 then 1 else 0 end) as "Battery OK" from sensor s where s.is_active = true