diff --git a/infrastructure/terraform/components/reporting/athena_named_query_pds_cleared_failures.tf b/infrastructure/terraform/components/reporting/athena_named_query_pds_cleared_failures.tf new file mode 100644 index 00000000..4d2c65aa --- /dev/null +++ b/infrastructure/terraform/components/reporting/athena_named_query_pds_cleared_failures.tf @@ -0,0 +1,12 @@ +resource "aws_athena_named_query" "pds_cleared_failures" { + name = "pds_cleared_failures" + description = "Query to report which pds changes may have resulted in the correction of a temporary or permanent failure" + workgroup = aws_athena_workgroup.user.id + database = aws_glue_catalog_database.reporting.name + query = file("${path.module}/scripts/sql/reports/pds_cleared_failures.sql") + + depends_on = [ + null_resource.request_item_status_table, + null_resource.request_item_plan_status_table + ] +} diff --git a/infrastructure/terraform/components/reporting/scripts/sql/reports/pds_cleared_failures.sql b/infrastructure/terraform/components/reporting/scripts/sql/reports/pds_cleared_failures.sql new file mode 100644 index 00000000..cb1e298d --- /dev/null +++ b/infrastructure/terraform/components/reporting/scripts/sql/reports/pds_cleared_failures.sql @@ -0,0 +1,22 @@ +SELECT rip_success.requestitemid, rip_success.completedtime, rip_success.communicationtype, rip_success.recipientcontactid +FROM ( + SELECT ri.nhsnumberhash, rip.communicationtype, ri.requestitemid AS secondrequestitemid, + LAG(ri.requestitemid,1) OVER (PARTITION BY ri.nhsnumberhash, rip.communicationtype ORDER BY ri.createdtime) AS firstrequestitemid + FROM request_item_status ri + INNER JOIN request_item_plan_status rip ON + rip.requestitemid = ri.requestitemid + WHERE (rip.communicationtype = 'EMAIL' OR rip.communicationtype = 'SMS') +) AS tx +INNER JOIN request_item_plan_status rip_success ON + rip_success.requestitemid = tx.secondrequestitemid AND + rip_success.communicationtype = tx.communicationtype +INNER JOIN request_item_plan_status rip_failed ON + rip_failed.requestitemid = firstrequestitemid AND + rip_failed.communicationtype = tx.communicationtype +WHERE + rip_success.communicationtype IN ('SMS', 'EMAIL') AND + rip_success.communicationtype = rip_failed.communicationtype AND + rip_success.status = 'DELIVERED' AND + rip_failed.status = 'FAILED' AND + (rip_failed.failedreason LIKE '%TEMPORARY%' OR rip_failed.failedreason LIKE '%PERMANENT%') +ORDER BY rip_success.completedtime