Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
4f6ebbe
[PRMP-1215] mock login url fix for test
SWhyteAnswer Jan 27, 2026
9e61cea
[PRMP-783] - Modify CloudWatch logs query params for Lloyd George Upload
MohammadIqbalAD-NHS Jan 27, 2026
a414ea1
[PRMP-783] - Temporarily change data collection period for testing
MohammadIqbalAD-NHS Jan 28, 2026
e27e830
[PRMP-783] - Temporarily change data collection period for testing
MohammadIqbalAD-NHS Jan 28, 2026
9891ca0
[PRMP-783] - Temporarily change data collection period for testing
MohammadIqbalAD-NHS Jan 28, 2026
8a0faf6
[PRMP-783] - Temporarily change statistical report period for testing
MohammadIqbalAD-NHS Jan 29, 2026
8b2365c
[PRMP-783] - Refactor column name to DailyCountUploaded
MohammadIqbalAD-NHS Jan 29, 2026
7129a9c
[PRMP-783] - Add column for unique users uploaded
MohammadIqbalAD-NHS Jan 29, 2026
573845e
[PRMP-783] - Fix unit tests
MohammadIqbalAD-NHS Jan 30, 2026
fe08e89
[PRMP-1285] - Create cloudwatch logs query for users reviewed
MohammadIqbalAD-NHS Jan 30, 2026
310de5a
[PRMP-783] - Revert sandbox testing code
MohammadIqbalAD-NHS Jan 30, 2026
11aafbb
[PRMP-783] - make format
MohammadIqbalAD-NHS Jan 30, 2026
9e8046b
[PRMP-1285] - Create column for weekly users reviewed in report
MohammadIqbalAD-NHS Jan 30, 2026
00b4697
Merge remote-tracking branch 'origin/PRMP-1215' into PRMP-783
MohammadIqbalAD-NHS Jan 30, 2026
3a4ed97
[PRMP-1285] - Create cloudwatch query log for reassigned
MohammadIqbalAD-NHS Jan 30, 2026
b6a28e2
[PRMP-1285] - Add column for unique users reassigned
MohammadIqbalAD-NHS Jan 30, 2026
9228cc8
[PRMP-1285] - make format
MohammadIqbalAD-NHS Jan 30, 2026
9004ff2
[PRMP-783] - Merge PRMP-1285
MohammadIqbalAD-NHS Jan 30, 2026
8f93b36
Merge branch 'main' into PRMP-783
MohammadIqbalAD-NHS Feb 2, 2026
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
1 change: 1 addition & 0 deletions lambdas/handlers/document_status_check_handler.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ def lambda_handler(event, context):
document_ids=documents_id_list, nhs_number=nhs_number_query_string
)
if results:
logger.info("All documents processed successfully")
return ApiGatewayResponse(
status_code=200, body=json.dumps(results), methods="GET"
).create_api_gateway_response()
Expand Down
5 changes: 4 additions & 1 deletion lambdas/models/report/statistics.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,11 +52,14 @@ class RecordStoreData(StatisticData):
class OrganisationData(StatisticData):
number_of_patients: int = 0
average_records_per_patient: Decimal = Decimal(0)
daily_count_stored: int = 0
daily_count_uploaded: int = 0
daily_count_viewed: int = 0
daily_count_downloaded: int = 0
daily_count_deleted: int = 0
daily_count_searched: int = 0
daily_count_users_uploaded: int = 0
daily_count_users_reviewed: int = 0
daily_count_users_reassigned: int = 0
daily_count_users_accessing_deceased: int = 0
daily_count_ods_report_requested: int = 0
daily_count_ods_report_created: int = 0
Expand Down
23 changes: 19 additions & 4 deletions lambdas/services/data_collection_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,13 @@
from utils.cloudwatch_logs_query import (
CloudwatchLogsQueryParams,
CountUsersAccessedDeceasedPatient,
CountUsersLloydGeorgeRecordsUploaded,
CountUsersLloydGeorgeRecordsReassigned,
CountUsersLloydGeorgeRecordsReviewed,
LloydGeorgeRecordsDeleted,
LloydGeorgeRecordsDownloaded,
LloydGeorgeRecordsSearched,
LloydGeorgeRecordsStored,
LloydGeorgeRecordsUploaded,
LloydGeorgeRecordsViewed,
OdsReportsCreated,
OdsReportsRequested,
Expand Down Expand Up @@ -191,8 +194,17 @@ def get_organisation_data(
daily_count_deleted = self.get_cloud_watch_query_result(
LloydGeorgeRecordsDeleted, start_date, end_date
)
daily_count_stored = self.get_cloud_watch_query_result(
LloydGeorgeRecordsStored, start_date, end_date
daily_count_uploaded = self.get_cloud_watch_query_result(
LloydGeorgeRecordsUploaded, start_date, end_date
)
daily_count_users_uploaded = self.get_cloud_watch_query_result(
CountUsersLloydGeorgeRecordsUploaded, start_date, end_date
)
daily_count_users_reviewed = self.get_cloud_watch_query_result(
CountUsersLloydGeorgeRecordsReviewed, start_date, end_date
)
daily_count_users_reassigned = self.get_cloud_watch_query_result(
CountUsersLloydGeorgeRecordsReassigned, start_date, end_date
)
daily_count_searched = self.get_cloud_watch_query_result(
LloydGeorgeRecordsSearched, start_date, end_date
Expand All @@ -213,7 +225,10 @@ def get_organisation_data(
daily_count_viewed,
daily_count_downloaded,
daily_count_deleted,
daily_count_stored,
daily_count_uploaded,
daily_count_users_uploaded,
daily_count_users_reviewed,
daily_count_users_reassigned,
daily_count_searched,
daily_count_deceased,
daily_count_ods_report_requested,
Expand Down
2 changes: 1 addition & 1 deletion lambdas/services/mock_login_redirect_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ def prepare_redirect_response(self, event):

state = "".join(random.choices(string.ascii_letters + string.digits, k=30))
self.save_state_in_dynamo_db(state)
if os.getenv("WORKSPACE") == "pre-prod":
if os.getenv("WORKSPACE") in ["pre-prod", "ndr-test"]:
Comment thread
robg-test marked this conversation as resolved.
clean_url = re.sub(r"^api.", "", host)
else:
clean_url = re.sub(r"^api-", "", host)
Expand Down
5 changes: 4 additions & 1 deletion lambdas/services/statistical_report_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,10 @@ def reorder_columns(self, joined_data: pl.DataFrame) -> pl.DataFrame:
"weekly_count_users_accessing_deceased",
"weekly_count_viewed",
"weekly_count_downloaded",
"weekly_count_stored",
"weekly_count_uploaded",
"weekly_count_users_uploaded",
"weekly_count_users_reviewed",
"weekly_count_users_reassigned",
"weekly_count_deleted",
"weekly_count_ods_report_requested",
"weekly_count_ods_report_created",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,11 +51,14 @@
ods_code="H81109",
number_of_patients=2,
average_records_per_patient=3,
daily_count_stored=4,
daily_count_uploaded=4,
daily_count_viewed=40,
daily_count_downloaded=20,
daily_count_deleted=2,
daily_count_searched=30,
daily_count_users_uploaded=4,
daily_count_users_reviewed=2,
daily_count_users_reassigned=2,
daily_count_users_accessing_deceased=13,
daily_count_ods_report_created=13,
daily_count_ods_report_requested=20,
Expand All @@ -66,11 +69,14 @@
ods_code="Y12345",
number_of_patients=1,
average_records_per_patient=2,
daily_count_stored=2,
daily_count_uploaded=2,
daily_count_viewed=20,
daily_count_downloaded=10,
daily_count_deleted=1,
daily_count_searched=50,
daily_count_users_uploaded=2,
daily_count_users_reviewed=1,
daily_count_users_reassigned=1,
daily_count_users_accessing_deceased=2,
daily_count_ods_report_created=0,
daily_count_ods_report_requested=10,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,17 +57,38 @@
},
]

MOCK_LG_STORED = [
MOCK_LG_UPLOADED = [
{
"ods_code": "Y12345",
"daily_count_stored": "2",
"daily_count_uploaded": "2",
},
{
"ods_code": "H81109",
"daily_count_stored": "4",
"daily_count_uploaded": "4",
},
]

MOCK_USERS_LG_UPLOADED = [
{
"ods_code": "Y12345",
"daily_count_users_uploaded": "2",
},
{
"ods_code": "H81109",
"daily_count_users_uploaded": "4",
},
]

MOCK_USERS_LG_REVIEWED = [
{"ods_code": "Y12345", "daily_count_users_reviewed": "1"},
{"ods_code": "H81109", "daily_count_users_reviewed": "2"},
]

MOCK_USERS_LG_REASSIGNED = [
{"ods_code": "Y12345", "daily_count_users_reassigned": "1"},
{"ods_code": "H81109", "daily_count_users_reassigned": "2"},
]

MOCK_PATIENT_SEARCHED = [
{
"ods_code": "Y12345",
Expand Down
48 changes: 38 additions & 10 deletions lambdas/tests/unit/helpers/data/statistic/mock_statistic_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,10 +88,12 @@
ods_code="Z56789",
number_of_patients=4,
average_records_per_patient=Decimal("4.5"),
daily_count_stored=0,
daily_count_uploaded=0,
daily_count_viewed=35,
daily_count_downloaded=4,
daily_count_deleted=1,
daily_count_users_reviewed=0,
daily_count_users_reassigned=0,
daily_count_users_accessing_deceased=12,
daily_count_ods_report_requested=10,
daily_count_ods_report_created=0,
Expand All @@ -102,10 +104,12 @@
ods_code="Y12345",
number_of_patients=9,
average_records_per_patient=Decimal("2.78"),
daily_count_stored=0,
daily_count_uploaded=0,
daily_count_viewed=15,
daily_count_downloaded=1,
daily_count_deleted=1,
daily_count_users_reviewed=0,
daily_count_users_reassigned=0,
daily_count_users_accessing_deceased=22,
daily_count_ods_report_requested=2,
daily_count_ods_report_created=2,
Expand All @@ -116,10 +120,13 @@
ods_code="Y12345",
number_of_patients=10,
average_records_per_patient=Decimal("3.51"),
daily_count_stored=2,
daily_count_uploaded=2,
daily_count_viewed=30,
daily_count_downloaded=5,
daily_count_deleted=1,
daily_count_users_uploaded=2,
daily_count_users_reviewed=2,
daily_count_users_reassigned=2,
daily_count_users_accessing_deceased=9,
daily_count_ods_report_requested=2,
daily_count_ods_report_created=2,
Expand All @@ -129,11 +136,14 @@
[
{
"ods_code": "Z56789",
"weekly_count_stored": 0,
"weekly_count_uploaded": 0,
"weekly_count_viewed": 35,
"weekly_count_downloaded": 4,
"weekly_count_deleted": 1,
"weekly_count_searched": 0,
"weekly_count_users_uploaded": 0,
"weekly_count_users_reviewed": 0,
"weekly_count_users_reassigned": 0,
"weekly_count_users_accessing_deceased": 12,
"weekly_count_ods_report_requested": 10,
"weekly_count_ods_report_created": 0,
Expand All @@ -142,11 +152,14 @@
},
{
"ods_code": "Y12345",
"weekly_count_stored": 0 + 2,
"weekly_count_uploaded": 0 + 2,
"weekly_count_viewed": 15 + 30,
"weekly_count_downloaded": 1 + 5,
"weekly_count_deleted": 1 + 1,
"weekly_count_searched": 0,
"weekly_count_users_uploaded": 0 + 2,
"weekly_count_users_reviewed": 2,
"weekly_count_users_reassigned": 2,
"weekly_count_users_accessing_deceased": 31,
"weekly_count_ods_report_requested": 4,
"weekly_count_ods_report_created": 4,
Expand All @@ -163,10 +176,13 @@
"OdsCode": "Z56789",
"NumberOfPatients": 4,
"AverageRecordsPerPatient": Decimal("4.5"),
"DailyCountStored": 0,
"DailyCountUploaded": 0,
"DailyCountViewed": 35,
"DailyCountDownloaded": 4,
"DailyCountDeleted": 1,
"DailyCountUsersUploaded": 0,
"DailyCountUsersReviewed": 0,
"DailyCountUsersReassigned": 0,
"DailyCountUsersAccessingDeceased": 12,
"DailyCountOdsReportRequested": 10,
"StatisticID": "OrganisationData#5acda4bf-8b93-4ba0-8410-789aac4fcbae",
Expand All @@ -176,10 +192,13 @@
"OdsCode": "Y12345",
"NumberOfPatients": 9,
"AverageRecordsPerPatient": Decimal("2.78"),
"DailyCountStored": 0,
"DailyCountUploaded": 0,
"DailyCountViewed": 15,
"DailyCountDownloaded": 1,
"DailyCountDeleted": 1,
"DailyCountUsersUploaded": 0,
"DailyCountUsersReviewed": 0,
"DailyCountUsersReassigned": 0,
"DailyCountUsersAccessingDeceased": 22,
"DailyCountOdsReportRequested": 2,
"DailyCountOdsReportCreated": 2,
Expand All @@ -190,10 +209,13 @@
"OdsCode": "Y12345",
"NumberOfPatients": 10,
"AverageRecordsPerPatient": Decimal("3.51"),
"DailyCountStored": 2,
"DailyCountUploaded": 2,
"DailyCountViewed": 30,
"DailyCountDownloaded": 5,
"DailyCountDeleted": 1,
"DailyCountUsersUploaded": 2,
"DailyCountUsersReviewed": 2,
"DailyCountUsersReassigned": 2,
"DailyCountUsersAccessingDeceased": 9,
"DailyCountOdsReportRequested": 2,
"DailyCountOdsReportCreated": 2,
Expand Down Expand Up @@ -314,7 +336,10 @@
"Weekly count users accessing deceased": 12,
"Weekly count viewed": 35,
"Weekly count downloaded": 4,
"Weekly count stored": 0,
"Weekly count uploaded": 0,
"Weekly count users uploaded": 0,
"Weekly count users reviewed": 0,
"Weekly count users reassigned": 0,
"Weekly count deleted": 1,
"Weekly count ods report requested": 10,
"Weekly count ods report created": 0,
Expand All @@ -336,7 +361,10 @@
"Weekly count users accessing deceased": 31,
"Weekly count viewed": 15 + 30,
"Weekly count downloaded": 1 + 5,
"Weekly count stored": 0 + 2,
"Weekly count uploaded": 0 + 2,
"Weekly count users uploaded": 0 + 2,
"Weekly count users reviewed": 2,
"Weekly count users reassigned": 2,
"Weekly count deleted": 1 + 1,
"Weekly count ods report requested": 4,
"Weekly count ods report created": 4,
Expand Down
20 changes: 16 additions & 4 deletions lambdas/tests/unit/services/test_data_collection_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,20 +39,26 @@
MOCK_DECEASED_ACCESS,
MOCK_LG_DELETED,
MOCK_LG_DOWNLOADED,
MOCK_LG_STORED,
MOCK_LG_UPLOADED,
MOCK_LG_VIEWED,
MOCK_ODS_REPORT_CREATED,
MOCK_ODS_REPORT_REQUESTED,
MOCK_PATIENT_SEARCHED,
MOCK_UNIQUE_ACTIVE_USER_IDS,
MOCK_USERS_LG_UPLOADED,
MOCK_USERS_LG_REASSIGNED,
MOCK_USERS_LG_REVIEWED,
)
from utils.cloudwatch_logs_query import (
CloudwatchLogsQueryParams,
CountUsersAccessedDeceasedPatient,
CountUsersLloydGeorgeRecordsUploaded,
CountUsersLloydGeorgeRecordsReassigned,
CountUsersLloydGeorgeRecordsReviewed,
LloydGeorgeRecordsDeleted,
LloydGeorgeRecordsDownloaded,
LloydGeorgeRecordsSearched,
LloydGeorgeRecordsStored,
LloydGeorgeRecordsUploaded,
LloydGeorgeRecordsViewed,
OdsReportsCreated,
OdsReportsRequested,
Expand Down Expand Up @@ -102,8 +108,14 @@ def mock_implementation(query_params: CloudwatchLogsQueryParams, **_kwargs):
return MOCK_LG_DOWNLOADED
elif query_params == LloydGeorgeRecordsDeleted:
return MOCK_LG_DELETED
elif query_params == LloydGeorgeRecordsStored:
return MOCK_LG_STORED
elif query_params == LloydGeorgeRecordsUploaded:
return MOCK_LG_UPLOADED
elif query_params == CountUsersLloydGeorgeRecordsUploaded:
return MOCK_USERS_LG_UPLOADED
elif query_params == CountUsersLloydGeorgeRecordsReviewed:
return MOCK_USERS_LG_REVIEWED
elif query_params == CountUsersLloydGeorgeRecordsReassigned:
return MOCK_USERS_LG_REASSIGNED
elif query_params == UniqueActiveUserIds:
return MOCK_UNIQUE_ACTIVE_USER_IDS
elif query_params == LloydGeorgeRecordsSearched:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,7 @@ def test_summarise_organisation_data_larger_mock_data(mock_service):


def assert_weekly_counts_match_sum_of_daily_counts(mock_data, row_in_actual_data):
for count_type in ["viewed", "downloaded", "stored", "deleted"]:
for count_type in ["viewed", "downloaded", "uploaded", "deleted"]:
expected_weekly_count = sum(
getattr(data, f"daily_count_{count_type}") for data in mock_data
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,7 @@
from models.document_reference import DocumentReference
from services.mock_virus_scan_service import MockVirusScanService
from services.upload_document_reference_service import UploadDocumentReferenceService
from tests.unit.conftest import (
MOCK_LG_BUCKET,
MOCK_STAGING_STORE_BUCKET,
)
from tests.unit.conftest import MOCK_LG_BUCKET, MOCK_STAGING_STORE_BUCKET
from utils.common_query_filters import (
FinalOrPreliminaryAndNotSuperseded,
PreliminaryStatus,
Expand Down
Loading
Loading