diff --git a/apps/modernization-api/src/main/resources/db/changelog/report-execution-changelog.yml b/apps/modernization-api/src/main/resources/db/changelog/report-execution-changelog.yml index 5c583415ac..561f53bc3d 100644 --- a/apps/modernization-api/src/main/resources/db/changelog/report-execution-changelog.yml +++ b/apps/modernization-api/src/main/resources/db/changelog/report-execution-changelog.yml @@ -36,6 +36,9 @@ databaseChangeLog: - sqlFile: path: db/report/execution/libraries/nbs_sr_13.sql splitStatements: false + - sqlFile: + path: db/report/execution/libraries/potntl_dup_inv_sum.sql + splitStatements: false - sqlFile: path: db/report/execution/libraries/nbs_sr_12.sql splitStatements: false diff --git a/apps/modernization-api/src/main/resources/db/report/execution/libraries/potntl_dup_inv_sum.sql b/apps/modernization-api/src/main/resources/db/report/execution/libraries/potntl_dup_inv_sum.sql new file mode 100644 index 0000000000..fb9d9e9880 --- /dev/null +++ b/apps/modernization-api/src/main/resources/db/report/execution/libraries/potntl_dup_inv_sum.sql @@ -0,0 +1,44 @@ +-- Migrate the NBSCUSTOM.SAS library to the nbs_sr_05 python library + +USE [NBS_ODSE] + +DECLARE @pyLib VARCHAR(50) = 'potntl_dup_inv_sum' +DECLARE @sasLib VARCHAR(50) = 'POTNTL_DUP_INV_SUM.SAS' +DECLARE @desc VARCHAR(300) = 'Potential Duplicate Investigations - Identifies potential duplicate investigations for the same patient with the + same disease within a user-specified number of days.' + +IF EXISTS (SELECT * FROM [dbo].[Report_Library] WHERE UPPER(library_name) = @sasLib) +BEGIN + UPDATE [dbo].[Report_Library] + SET + library_name = @pyLib, + runner = 'python', + desc_txt = @desc, + last_chg_time = CURRENT_TIMESTAMP, + last_chg_user_id = 99999999 + WHERE + UPPER(library_name) = @sasLib; +END +ELSE +BEGIN + -- Create a row for this library + INSERT INTO [dbo].[Report_Library] ( + library_name, + desc_txt, + runner, + is_builtin_ind, + add_time, + add_user_id, + last_chg_time, + last_chg_user_id + ) VALUES ( + @pyLib, + @desc, + 'python', + 'Y', + CURRENT_TIMESTAMP, + 99999999, + CURRENT_TIMESTAMP, + 99999999 + ); +END diff --git a/apps/report-execution/src/execute_report.py b/apps/report-execution/src/execute_report.py index bbb6fe0c20..87020eac27 100644 --- a/apps/report-execution/src/execute_report.py +++ b/apps/report-execution/src/execute_report.py @@ -23,6 +23,7 @@ def execute_report(report_spec: models.ReportSpec): trx, subset_query=report_spec.subset_query, data_source_name=report_spec.data_source_name, + days_value=report_spec.days_value, ) check_valid_result(result, report_spec) diff --git a/apps/report-execution/src/libraries/potntl_dup_inv_sum.py b/apps/report-execution/src/libraries/potntl_dup_inv_sum.py new file mode 100644 index 0000000000..e320bfef6b --- /dev/null +++ b/apps/report-execution/src/libraries/potntl_dup_inv_sum.py @@ -0,0 +1,121 @@ +from src.db_transaction import Transaction +from src.models import ReportResult + + +def execute( + trx: Transaction, + subset_query: str, + data_source_name: str, + days_value: None | int, + **kwargs, +): + """Potential Duplicate Investigations. + + Identifies potential duplicate investigations for the same patient, + with the same disease, within a user-specified number of days. + """ + # Only use default if days_value is None (not provided) + # If days_value is 0, treat it as 0 (not default) + # days_value = kwargs.get('days_value') + if days_value is None: + days_value = 3650 + + full_query = f""" + WITH subset AS ({subset_query}) + -- Capture SQL Server's physical row order + , source_order AS ( + SELECT + *, + ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS sas_row_num + FROM subset + ) + , clean_data AS ( + SELECT + PATIENT_LOCAL_ID, + PATIENT_FIRST_NAME, + PATIENT_LAST_NAME, + PATIENT_DOB, + INVESTIGATION_LOCAL_ID, + DISEASE, + CASE_STATUS, + EVENT_DATE, + EVENT_DATE_TYPE, + MMWR_YEAR, + NOTIFICATION_STATUS, + DISEASE_CD, + sas_row_num + FROM source_order + WHERE EVENT_DATE IS NOT NULL + AND PATIENT_LOCAL_ID IS NOT NULL + AND DISEASE_CD IS NOT NULL + ) + -- Calculate days since previous and until next event + , datediff_calc AS ( + SELECT + *, + DATEDIFF(day, + LAG(EVENT_DATE) OVER ( + PARTITION BY + PATIENT_LOCAL_ID, + DISEASE_CD + ORDER BY EVENT_DATE, sas_row_num + ), + EVENT_DATE + ) AS days_since_prev, + DATEDIFF(day, + EVENT_DATE, + LEAD(EVENT_DATE) OVER ( + PARTITION BY PATIENT_LOCAL_ID, + DISEASE_CD + ORDER BY EVENT_DATE, sas_row_num + ) + ) AS days_until_next + FROM clean_data + ) + -- Count events for each patient and disease to identify potential duplicates + , event_counts AS ( + SELECT + PATIENT_LOCAL_ID, + DISEASE_CD, + COUNT(*) AS event_count + FROM clean_data + GROUP BY PATIENT_LOCAL_ID, DISEASE_CD + ) + -- Final selection of potential duplicates based on days thresholds + SELECT + d.PATIENT_LOCAL_ID AS [Patient Local ID], + d.PATIENT_FIRST_NAME AS [Patient First Name], + d.PATIENT_LAST_NAME AS [Patient Last Name], + d.PATIENT_DOB AS DOB, + d.INVESTIGATION_LOCAL_ID AS [Investigation Local ID], + d.DISEASE AS Disease, + d.CASE_STATUS AS [Case Status], + d.EVENT_DATE AS [Event Date], + d.EVENT_DATE_TYPE AS [Event Date Type], + d.MMWR_YEAR AS [MMWR Year], + d.NOTIFICATION_STATUS AS [Notification Record Status], + d.DISEASE_CD AS [Disease Code] + FROM datediff_calc d + JOIN event_counts c + ON d.PATIENT_LOCAL_ID = c.PATIENT_LOCAL_ID + AND d.DISEASE_CD = c.DISEASE_CD + WHERE c.event_count > 1 + AND ( + (d.days_since_prev IS NOT NULL AND d.days_since_prev <= {days_value}) + OR (d.days_until_next IS NOT NULL AND d.days_until_next <= {days_value}) + ) + ORDER BY + d.PATIENT_LOCAL_ID COLLATE Latin1_General_BIN, + d.DISEASE_CD COLLATE Latin1_General_BIN, + d.EVENT_DATE, + d.sas_row_num + """ + + content = trx.query(full_query) + + header = 'Potential Duplicate Investigations' + subheader = f'Duplicate Investigations Time Frame: {days_value} Days' + + return ReportResult( + content_type='table', content=content, header=header, subheader=subheader + ) diff --git a/apps/report-execution/src/models.py b/apps/report-execution/src/models.py index 9d32f6b70c..a64d31e7a0 100644 --- a/apps/report-execution/src/models.py +++ b/apps/report-execution/src/models.py @@ -13,6 +13,7 @@ class ReportSpec(BaseModel): library_name: str = Field(min_length=1) data_source_name: str = Field(min_length=1) subset_query: str = Field(min_length=1) + days_value: int | None = None # Specific to potntl_dup_inv_sum # column names and values diff --git a/apps/report-execution/tests/conftest.py b/apps/report-execution/tests/conftest.py index efe601dc0b..0ac77d8732 100644 --- a/apps/report-execution/tests/conftest.py +++ b/apps/report-execution/tests/conftest.py @@ -167,7 +167,7 @@ def get_tables_from_faker(schema_name: str) -> tuple[list[str], list[str]]: schema = yaml.safe_load(f.read()) db_tables = [t['table_name'] for t in schema['tables']] - fk_tables = schema['config']['nbs']['fk_tables'] + fk_tables = schema['config'].get('nbs', {}).get('fk_tables', []) return (db_tables, fk_tables) diff --git a/apps/report-execution/tests/integration/assets/tablefaker_schema/inv_summ_datamart.yaml b/apps/report-execution/tests/integration/assets/tablefaker_schema/inv_summ_datamart.yaml new file mode 100644 index 0000000000..7137ad5f2a --- /dev/null +++ b/apps/report-execution/tests/integration/assets/tablefaker_schema/inv_summ_datamart.yaml @@ -0,0 +1,270 @@ +config: + seed: 42 + +tables: + - table_name: "[RDB].[dbo].[INV_SUMM_DATAMART]" + row_count: 200 + columns: + - column_name: INVESTIGATION_KEY + type: int + data: fake.unique.random_int(1, 1000000) + null_percentage: 0 + + - column_name: PATIENT_KEY + type: int + data: fake.random_int(1, 1000000) + null_percentage: 0.05 + + - column_name: PATIENT_LOCAL_ID + type: string + data: f"PSN_DUP_{fake.random_int(1, 10)}_GA01" + null_percentage: 0.02 + + - column_name: INVESTIGATION_LOCAL_ID + type: string + data: f"CAS{fake.random_int(10000000, 99999999)}GA01" + null_percentage: 0.01 + + - column_name: DISEASE + type: string + data: random.choice(["Syphilis, primary", "HIV", "Gonorrhea", "Chlamydia trachomatis infection", "Hepatitis A, acute", "2019 Novel Coronavirus"]) + null_percentage: 0.01 + + - column_name: DISEASE_CD + type: string + data: random.choice(["10311", "900", "10280", "10274", "10110", "11065"]) + null_percentage: 0.01 + + - column_name: PATIENT_FIRST_NAME + type: string + data: fake.first_name() + null_percentage: 0.05 + + - column_name: PATIENT_LAST_NAME + type: string + data: fake.last_name() + null_percentage: 0.05 + + - column_name: PATIENT_DOB + type: string + data: f"{fake.date_of_birth(minimum_age=0, maximum_age=100).strftime('%Y-%m-%d')} 00:00:00.000" + null_percentage: 0.05 + + - column_name: PATIENT_CURRENT_SEX + type: string + data: random.choice(["Male", "Female", "Unknown", None]) + null_percentage: 0.10 + + - column_name: AGE_REPORTED + type: int + data: fake.random_int(0, 100) + null_percentage: 0.15 + + - column_name: AGE_REPORTED_UNIT + type: string + data: random.choice(["Years", "Months", "Days", None]) + null_percentage: 0.15 + + - column_name: PATIENT_STREET_ADDRESS_1 + type: string + data: fake.street_address() + null_percentage: 0.20 + + - column_name: PATIENT_STREET_ADDRESS_2 + type: string + data: None + null_percentage: 0.60 + + - column_name: PATIENT_CITY + type: string + data: fake.city() + null_percentage: 0.15 + + - column_name: PATIENT_STATE + type: string + data: random.choice(["Georgia", "Texas", "California", "Florida", "New York", "Indiana", "Pennsylvania", None]) + null_percentage: 0.10 + + - column_name: PATIENT_ZIP + type: string + data: fake.zipcode() + null_percentage: 0.20 + + - column_name: PATIENT_ETHNICITY + type: string + data: random.choice(["Not Hispanic or Latino", "Hispanic or Latino", "Unknown", None]) + null_percentage: 0.15 + + - column_name: RACE_CALCULATED + type: string + data: random.choice(["White", "Black or African American", "Asian", "Multi-Race", "Unknown", None]) + null_percentage: 0.15 + + - column_name: RACE_CALC_DETAILS + type: string + data: random.choice(["White", "Asian", "Black or African American", None]) + null_percentage: 0.30 + + - column_name: INVESTIGATION_STATUS + type: string + data: random.choice(["Open", "Closed", None]) + null_percentage: 0.05 + + - column_name: EARLIEST_RPT_TO_CNTY_DT + type: string + data: None + null_percentage: 1.0 + + - column_name: EARLIEST_RPT_TO_STATE_DT + type: string + data: None + null_percentage: 1.0 + + - column_name: DIAGNOSIS_DATE + type: string + data: None + null_percentage: 1.0 + + - column_name: ILLNESS_ONSET_DATE + type: string + data: None + null_percentage: 1.0 + + - column_name: CASE_STATUS + type: string + data: random.choice(["Confirmed", "Probable", "Suspect", "Not a Case", None]) + null_percentage: 0.10 + + - column_name: MMWR_WEEK + type: int + data: fake.random_int(1, 53) + null_percentage: 0.20 + + - column_name: MMWR_YEAR + type: int + data: fake.random_int(2015, 2026) + null_percentage: 0.20 + + - column_name: INVESTIGATION_CREATE_DATE + type: string + data: None + null_percentage: 1.0 + + - column_name: INVESTIGATION_CREATED_BY + type: string + data: random.choice(["PKS, PKS", "user, demo", "Ward, Jennifer", None]) + null_percentage: 0.10 + + - column_name: INVESTIGATION_LAST_UPDTD_DATE + type: string + data: None + null_percentage: 1.0 + + - column_name: NOTIFICATION_STATUS + type: string + data: random.choice(["COMPLETED", "APPROVED", "REJECTED", None]) + null_percentage: 0.15 + + - column_name: EVENT_DATE + type: string + data: f"{fake.date_between(start_date='-1y', end_date='today').strftime('%Y-%m-%d')} 12:00:00.000" + null_percentage: 0.05 + + - column_name: EVENT_DATE_TYPE + type: string + data: | + ( + lambda ed: None if ed is None else random.choice([ + "Investigation Start Date", + "Date of Report", + "Specimen Collection Date of Earliest Associated Lab", + "Illness Onset Date", + "Date of Diagnosis" + ]) + )(EVENT_DATE) + null_percentage: 0 + + - column_name: PROGRAM_AREA + type: string + data: random.choice(["GCD", "STD", "TB", "HIV", "HEP", "VPD", "ARBO", "BMIRD", None]) + null_percentage: 0.10 + + - column_name: PHYSICIAN_LAST_NAME + type: string + data: random.choice(["Jones", "Smith", "Williams", "Brown", "Johnson", None]) + null_percentage: 0.40 + + - column_name: PHYSICIAN_FIRST_NAME + type: string + data: random.choice(["Indiana", "John", "Mary", "Robert", "Patricia", None]) + null_percentage: 0.40 + + - column_name: NOTIFICATION_LOCAL_ID + type: string + data: f"NOT{fake.random_int(10000000, 99999999)}GA01" + null_percentage: 0.60 + + - column_name: NOTIFICATION_CREATE_DATE + type: string + data: None + null_percentage: 1.0 + + - column_name: NOTIFICATION_SENT_DATE + type: string + data: None + null_percentage: 1.0 + + - column_name: NOTIFICATION_SUBMITTER + type: string + data: random.choice(["PKS, PKS", "user, demo", "Ward, Jennifer", None]) + null_percentage: 0.60 + + - column_name: NOTIFICATION_LAST_UPDATED_DATE + type: string + data: None + null_percentage: 1.0 + + - column_name: NOTIFICATION_LAST_UPDATED_USER + type: string + data: random.choice(["PKS, PKS", "user, demo", "Ward, Jennifer", None]) + null_percentage: 0.70 + + - column_name: INV_RPT_DT + type: string + data: None + null_percentage: 1.0 + + - column_name: INV_START_DT + type: string + data: None + null_percentage: 1.0 + + - column_name: CONFIRMATION_DT + type: string + data: None + null_percentage: 1.0 + + - column_name: CONFIRMATION_METHOD + type: string + data: random.choice(["Laboratory confirmed", "Clinical diagnosis", "Epidemiologically linked", "Active Surveillance", None]) + null_percentage: 0.50 + + - column_name: HSPTL_ADMISSION_DT + type: string + data: None + null_percentage: 1.0 + + - column_name: CURR_PROCESS_STATE + type: string + data: random.choice(["Open Case", "Closed Case", "Field Follow-up", "Awaiting Interview", "Surveillance Follow-up", None]) + null_percentage: 0.20 + + - column_name: PATIENT_COUNTY_CODE + type: string + data: random.choice(["13121", "13089", "13067", "13001", "13003", "13005", "13007", None]) + null_percentage: 0.30 + + - column_name: JURISDICTION_NM + type: string + data: random.choice(["Fulton County", "Dekalb County", "Clayton County", "Cobb County", "Gwinnett County", None]) + null_percentage: 0.20 \ No newline at end of file diff --git a/apps/report-execution/tests/integration/execute_report.py b/apps/report-execution/tests/integration/execute_report.py index b125194eec..a0c4ff8f87 100644 --- a/apps/report-execution/tests/integration/execute_report.py +++ b/apps/report-execution/tests/integration/execute_report.py @@ -186,12 +186,16 @@ def test_execute_report_empty_string_prop(self, empty_string_prop): assert result['detail'][0]['msg'] == 'String should have at least 1 character' def test_execute_report_missing_result(self, monkeypatch): - def get_lib_returning_none(library_name: str, is_builtin: bool): - return type( + def get_lib_returning_none(library_name: str, is_builtin: bool, **kwargs): + def execute_method(self, trx, subset_query, data_source_name, **kwargs): + return None + + mock_library = type( 'MockLibrary', (), - {'execute': lambda self, trx, subset_query, data_source_name: None}, - )() + {'execute': execute_method}, + ) + return mock_library() with monkeypatch.context() as m: m.setattr('src.execute_report.get_library', get_lib_returning_none) @@ -214,19 +218,21 @@ def get_lib_returning_none(library_name: str, is_builtin: bool): def test_execute_report_result_missing_content_data(self, monkeypatch): def get_lib_without_data(library_name: str, is_builtin: bool): - return type( + def execute_method(self, trx, subset_query, data_source_name, **kwargs): + return { + 'content_type': 'table', + 'header': 'Custom Report: [NBS_ODSE].[dbo].[Filter_operator]', + 'content': { + 'columns': ['filter_operator_uid', 'filter_operator_code'], + }, + } + + mock_library = type( 'MockLibrary', (), - { - 'execute': lambda self, trx, subset_query, data_source_name: { - 'content_type': 'table', - 'header': 'Custom Report: [NBS_ODSE].[dbo].[Filter_operator]', - 'content': { - 'columns': ['filter_operator_uid', 'filter_operator_code'], - }, - } - }, - )() + {'execute': execute_method}, + ) + return mock_library() with monkeypatch.context() as m: m.setattr('src.execute_report.get_library', get_lib_without_data) @@ -257,22 +263,24 @@ def get_lib_without_data(library_name: str, is_builtin: bool): def test_execute_report_result_missing_content_columns(self, monkeypatch): def get_lib_without_columns(library_name: str, is_builtin: bool): - return type( + def execute_method(self, trx, subset_query, data_source_name, **kwargs): + return { + 'content_type': 'table', + 'header': 'Custom Report: [NBS_ODSE].[dbo].[Filter_operator]', + 'content': { + 'data': [ + (1, 'Code1'), + (2, 'Code2'), + ] + }, + } + + mock_library = type( 'MockLibrary', (), - { - 'execute': lambda self, trx, subset_query, data_source_name: { - 'content_type': 'table', - 'header': 'Custom Report: [NBS_ODSE].[dbo].[Filter_operator]', - 'content': { - 'data': [ - (1, 'Code1'), - (2, 'Code2'), - ] - }, - } - }, - )() + {'execute': execute_method}, + ) + return mock_library() with monkeypatch.context() as m: m.setattr('src.execute_report.get_library', get_lib_without_columns) diff --git a/apps/report-execution/tests/integration/libraries/potntl_dup_inv_sum.py b/apps/report-execution/tests/integration/libraries/potntl_dup_inv_sum.py new file mode 100644 index 0000000000..777f4ed989 --- /dev/null +++ b/apps/report-execution/tests/integration/libraries/potntl_dup_inv_sum.py @@ -0,0 +1,225 @@ +from collections import Counter + +import pytest +import yaml + +from src.execute_report import execute_report +from src.models import ReportSpec + +db_table = '[RDB].[dbo].[INV_SUMM_DATAMART]' +db_fk_tables = [] +faker_schema = 'inv_summ_datamart.yaml' + + +@pytest.mark.usefixtures('setup_containers', 'fake_db_table') +@pytest.mark.integration +class TestIntegrationNbsSrDupInvLibrary: + """Integration tests for the Potential Duplicate Investigations library. + + This report identifies potential duplicate investigations for the same patient + with the same disease within a user-specified number of days. + """ + + expected_columns = [ + 'Patient Local ID', + 'Patient First Name', + 'Patient Last Name', + 'DOB', + 'Investigation Local ID', + 'Disease', + 'Case Status', + 'Event Date', + 'Event Date Type', + 'MMWR Year', + 'Notification Record Status', + 'Disease Code', + ] + + def test_execute_report_check_data(self, snapshot): + """Test with no days_value - should default to 3650.""" + report_spec = ReportSpec.model_validate( + { + 'version': 1, + 'is_export': True, + 'is_builtin': True, + 'report_title': 'Potential Duplicate Investigations', + 'library_name': 'potntl_dup_inv_sum', + 'data_source_name': '[RDB].[dbo].[INV_SUMM_DATAMART]', + 'subset_query': 'SELECT * FROM [RDB].[dbo].[INV_SUMM_DATAMART]', + 'days_value': None, + } + ) + + result = execute_report(report_spec) + assert result.content_type == 'table' + assert result.header == 'Potential Duplicate Investigations' + assert 'Duplicate Investigations Time Frame: 3650 Days' + assert result.subheader is not None + + data = result.content + assert len(data.data) >= 0 + + snapshot.assert_match(yaml.dump(data.data), 'snapshot.yml') + + # Verify column structure + for col in self.expected_columns: + data.get_column(col) + + def test_execute_report_with_days_value(self): + """Test with a specific days value (e.g., 365 days).""" + report_spec = ReportSpec.model_validate( + { + 'version': 1, + 'is_export': True, + 'is_builtin': True, + 'report_title': 'Potential Duplicate Investigations', + 'library_name': 'potntl_dup_inv_sum', + 'data_source_name': '[RDB].[dbo].[INV_SUMM_DATAMART]', + 'subset_query': 'SELECT * FROM [RDB].[dbo].[INV_SUMM_DATAMART]', + 'days_value': 365, + } + ) + + result = execute_report(report_spec) + assert result.content_type == 'table' + assert result.header == 'Potential Duplicate Investigations' + assert result.subheader == 'Duplicate Investigations Time Frame: 365 Days' + + data = result.content + assert len(data.data) >= 0 + assert len(data.data[0]) == len(data.columns) if data.data else True + + # Verify column structure + for col in self.expected_columns: + data.get_column(col) + + def test_execute_report_with_large_days_value(self): + """Test with a large days value (e.g., 3650 days / 10 years).""" + report_spec = ReportSpec.model_validate( + { + 'version': 1, + 'is_export': True, + 'is_builtin': True, + 'report_title': 'Potential Duplicate Investigations', + 'library_name': 'potntl_dup_inv_sum', + 'data_source_name': '[RDB].[dbo].[INV_SUMM_DATAMART]', + 'subset_query': 'SELECT * FROM [RDB].[dbo].[INV_SUMM_DATAMART]', + 'days_value': 3650, + } + ) + + result = execute_report(report_spec) + assert result.content_type == 'table' + assert result.subheader == 'Duplicate Investigations Time Frame: 3650 Days' + + # Should return more results than the 30-day test + spec_30 = ReportSpec.model_validate( + { + 'version': 1, + 'is_export': True, + 'is_builtin': True, + 'report_title': 'Potential Duplicate Investigations', + 'library_name': 'potntl_dup_inv_sum', + 'data_source_name': '[RDB].[dbo].[INV_SUMM_DATAMART]', + 'subset_query': 'SELECT * FROM [RDB].[dbo].[INV_SUMM_DATAMART]', + 'days_value': 30, + } + ) + result_30 = execute_report(spec_30) + + # Our data should have more results with 3650 days_value than 30, but + # with a new snapshot where all potential duplicates are within 30 days, + # this may not be the case. + assert len(result.content.data) > len(result_30.content.data) + + def test_execute_report_with_negative_days_value(self): + """Test with a negative days value.""" + report_spec = ReportSpec.model_validate( + { + 'version': 1, + 'is_export': True, + 'is_builtin': True, + 'report_title': 'Potential Duplicate Investigations', + 'library_name': 'potntl_dup_inv_sum', + 'data_source_name': '[RDB].[dbo].[INV_SUMM_DATAMART]', + 'subset_query': 'SELECT * FROM [RDB].[dbo].[INV_SUMM_DATAMART]', + 'days_value': -3650, + } + ) + + result = execute_report(report_spec) + assert result.content_type == 'table' + assert result.subheader == 'Duplicate Investigations Time Frame: -3650 Days' + + # Based on current implementation, this should not return any results. + assert len(result.content.data) == 0 + + def test_execute_report_empty_subset(self): + """Test handling of empty result set.""" + report_spec = ReportSpec.model_validate( + { + 'version': 1, + 'is_export': True, + 'is_builtin': True, + 'report_title': 'Potential Duplicate Investigations', + 'library_name': 'potntl_dup_inv_sum', + 'data_source_name': '[RDB].[dbo].[INV_SUMM_DATAMART]', + 'subset_query': """ + SELECT * FROM [RDB].[dbo].[INV_SUMM_DATAMART] WHERE 1 = 0 + """, + 'days_value': 365, + } + ) + + result = execute_report(report_spec) + assert result.content_type == 'table' + assert len(result.content.data) == 0 + assert len(result.content.columns) == len(self.expected_columns) + + def test_execute_report_check_metadata(self): + """Check the metadata is correctly formatted.""" + report_spec = ReportSpec.model_validate( + { + 'version': 1, + 'is_export': True, + 'is_builtin': True, + 'report_title': 'Potential Duplicate Investigations', + 'library_name': 'potntl_dup_inv_sum', + 'data_source_name': '[RDB].[dbo].[INV_SUMM_DATAMART]', + 'subset_query': 'SELECT * FROM [RDB].[dbo].[INV_SUMM_DATAMART]', + 'days_value': 365, + } + ) + + result = execute_report(report_spec) + assert result.header == 'Potential Duplicate Investigations' + assert result.subheader == 'Duplicate Investigations Time Frame: 365 Days' + assert result.content_type == 'table' + + def test_execute_report_verify_no_single_events(self): + """Verify that patients with only one event are filtered out.""" + report_spec = ReportSpec.model_validate( + { + 'version': 1, + 'is_export': True, + 'is_builtin': True, + 'report_title': 'Potential Duplicate Investigations', + 'library_name': 'potntl_dup_inv_sum', + 'data_source_name': '[RDB].[dbo].[INV_SUMM_DATAMART]', + 'subset_query': 'SELECT * FROM [RDB].[dbo].[INV_SUMM_DATAMART]', + 'days_value': 3650, + } + ) + + result = execute_report(report_spec) + + # Count occurrences per patient/disease pair + patient_ids = result.content.get_column('Patient Local ID') + disease_cds = result.content.get_column('Disease Code') + + pairs = list(zip(patient_ids, disease_cds, strict=False)) + counts = Counter(pairs) + + # Each pair should appear at least twice + for count in counts.values(): + assert count >= 2, f'Patient/disease pair appears only {count} times' diff --git a/apps/report-execution/tests/integration/libraries/snapshots/potntl_dup_inv_sum/test_execute_report_check_data/snapshot.yml b/apps/report-execution/tests/integration/libraries/snapshots/potntl_dup_inv_sum/test_execute_report_check_data/snapshot.yml new file mode 100644 index 0000000000..6cf34e7a2a --- /dev/null +++ b/apps/report-execution/tests/integration/libraries/snapshots/potntl_dup_inv_sum/test_execute_report_check_data/snapshot.yml @@ -0,0 +1,2428 @@ +- !!python/tuple + - PSN_DUP_10_GA01 + - John + - Santiago + - 1978-12-25 00:00:00 + - CAS42115895GA01 + - Chlamydia trachomatis infection + - Not a Case + - 2025-07-18 12:00:00 + - Specimen Collection Date of Earliest Associated Lab + - !!python/object/apply:decimal.Decimal + - '2025' + - COMPLETED + - '10110' +- !!python/tuple + - PSN_DUP_10_GA01 + - Cynthia + - Weber + - 2012-08-20 00:00:00 + - CAS96300902GA01 + - Gonorrhea + - null + - 2025-12-17 12:00:00 + - Illness Onset Date + - !!python/object/apply:decimal.Decimal + - '2016' + - null + - '10110' +- !!python/tuple + - PSN_DUP_10_GA01 + - Austin + - Jones + - 2003-12-23 00:00:00 + - CAS68810561GA01 + - 2019 Novel Coronavirus + - Suspect + - 2026-01-30 12:00:00 + - Date of Diagnosis + - !!python/object/apply:decimal.Decimal + - '2015' + - REJECTED + - '10110' +- !!python/tuple + - PSN_DUP_10_GA01 + - Ashlee + - Washington + - 1960-01-24 00:00:00 + - CAS27528063GA01 + - Chlamydia trachomatis infection + - Not a Case + - 2026-03-22 12:00:00 + - Specimen Collection Date of Earliest Associated Lab + - !!python/object/apply:decimal.Decimal + - '2017' + - null + - '10110' +- !!python/tuple + - PSN_DUP_10_GA01 + - Erin + - Morales + - 1965-04-27 00:00:00 + - CAS91692326GA01 + - Hepatitis A, acute + - null + - 2026-04-27 12:00:00 + - Investigation Start Date + - !!python/object/apply:decimal.Decimal + - '2019' + - null + - '10110' +- !!python/tuple + - PSN_DUP_10_GA01 + - Stephanie + - Stevenson + - 1929-06-28 00:00:00 + - CAS84399083GA01 + - HIV + - Not a Case + - 2025-05-20 12:00:00 + - Investigation Start Date + - !!python/object/apply:decimal.Decimal + - '2017' + - null + - '10274' +- !!python/tuple + - PSN_DUP_10_GA01 + - Donna + - Smith + - 1979-02-06 00:00:00 + - CAS74854563GA01 + - 2019 Novel Coronavirus + - null + - 2025-08-06 12:00:00 + - Illness Onset Date + - !!python/object/apply:decimal.Decimal + - '2023' + - APPROVED + - '10274' +- !!python/tuple + - PSN_DUP_10_GA01 + - Noah + - Baird + - 2008-01-01 00:00:00 + - CAS82905845GA01 + - Gonorrhea + - null + - 2025-08-13 12:00:00 + - Date of Diagnosis + - !!python/object/apply:decimal.Decimal + - '2026' + - REJECTED + - '10274' +- !!python/tuple + - PSN_DUP_10_GA01 + - Jacob + - Barnett + - 1978-03-21 00:00:00 + - CAS65910756GA01 + - Syphilis, primary + - Suspect + - 2025-09-13 12:00:00 + - Investigation Start Date + - null + - APPROVED + - '10274' +- !!python/tuple + - PSN_DUP_10_GA01 + - Donna + - Becker + - 1998-03-13 00:00:00 + - CAS64237172GA01 + - HIV + - Confirmed + - 2026-03-09 12:00:00 + - Illness Onset Date + - !!python/object/apply:decimal.Decimal + - '2017' + - REJECTED + - '10274' +- !!python/tuple + - PSN_DUP_10_GA01 + - Deborah + - Reid + - 1972-03-27 00:00:00 + - CAS39711402GA01 + - Hepatitis A, acute + - Probable + - 2026-04-17 12:00:00 + - Investigation Start Date + - !!python/object/apply:decimal.Decimal + - '2026' + - APPROVED + - '10274' +- !!python/tuple + - PSN_DUP_10_GA01 + - Thomas + - Bender + - 1955-07-04 00:00:00 + - CAS61053877GA01 + - 2019 Novel Coronavirus + - null + - 2025-05-15 12:00:00 + - Investigation Start Date + - !!python/object/apply:decimal.Decimal + - '2023' + - null + - '10280' +- !!python/tuple + - PSN_DUP_10_GA01 + - Meagan + - Trevino + - 1939-06-27 00:00:00 + - CAS21002322GA01 + - HIV + - Suspect + - 2025-11-20 12:00:00 + - Specimen Collection Date of Earliest Associated Lab + - null + - APPROVED + - '10280' +- !!python/tuple + - PSN_DUP_10_GA01 + - Shannon + - Jordan + - 1925-10-18 00:00:00 + - CAS36484437GA01 + - Hepatitis A, acute + - Not a Case + - 2025-12-10 12:00:00 + - Date of Diagnosis + - !!python/object/apply:decimal.Decimal + - '2020' + - APPROVED + - '10280' +- !!python/tuple + - PSN_DUP_10_GA01 + - Sheryl + - Jones + - 2015-03-06 00:00:00 + - CAS87888306GA01 + - HIV + - Probable + - 2026-03-28 12:00:00 + - Illness Onset Date + - !!python/object/apply:decimal.Decimal + - '2024' + - null + - '10280' +- !!python/tuple + - PSN_DUP_10_GA01 + - Steven + - Campbell + - 1963-12-01 00:00:00 + - CAS69135982GA01 + - 2019 Novel Coronavirus + - Suspect + - 2025-06-08 12:00:00 + - Date of Report + - !!python/object/apply:decimal.Decimal + - '2021' + - COMPLETED + - '10311' +- !!python/tuple + - PSN_DUP_10_GA01 + - Mercedes + - Holland + - 1993-10-17 00:00:00 + - CAS38765353GA01 + - Syphilis, primary + - Probable + - 2025-10-20 12:00:00 + - Date of Diagnosis + - !!python/object/apply:decimal.Decimal + - '2020' + - null + - '10311' +- !!python/tuple + - PSN_DUP_10_GA01 + - Emily + - Nelson + - 1992-03-14 00:00:00 + - CAS16679008GA01 + - Gonorrhea + - Confirmed + - 2025-08-24 12:00:00 + - Illness Onset Date + - !!python/object/apply:decimal.Decimal + - '2018' + - APPROVED + - '11065' +- !!python/tuple + - PSN_DUP_10_GA01 + - Angela + - Black + - 1944-08-23 00:00:00 + - CAS47080140GA01 + - Hepatitis A, acute + - Suspect + - 2025-09-08 12:00:00 + - Illness Onset Date + - !!python/object/apply:decimal.Decimal + - '2023' + - REJECTED + - '11065' +- !!python/tuple + - PSN_DUP_10_GA01 + - Crystal + - Fields + - 1982-04-23 00:00:00 + - CAS71276220GA01 + - Syphilis, primary + - Confirmed + - 2025-11-17 12:00:00 + - Investigation Start Date + - !!python/object/apply:decimal.Decimal + - '2022' + - REJECTED + - '11065' +- !!python/tuple + - PSN_DUP_10_GA01 + - Jaclyn + - Barnes + - 2016-02-09 00:00:00 + - CAS91286864GA01 + - HIV + - null + - 2025-11-22 12:00:00 + - Date of Diagnosis + - !!python/object/apply:decimal.Decimal + - '2015' + - null + - '11065' +- !!python/tuple + - PSN_DUP_10_GA01 + - Thomas + - Hoffman + - 2001-04-24 00:00:00 + - CAS81202356GA01 + - Gonorrhea + - Suspect + - 2026-01-25 12:00:00 + - Specimen Collection Date of Earliest Associated Lab + - null + - REJECTED + - '11065' +- !!python/tuple + - PSN_DUP_10_GA01 + - Heather + - Church + - 1982-03-24 00:00:00 + - CAS43573422GA01 + - 2019 Novel Coronavirus + - null + - 2026-02-22 12:00:00 + - Specimen Collection Date of Earliest Associated Lab + - !!python/object/apply:decimal.Decimal + - '2018' + - APPROVED + - '11065' +- !!python/tuple + - PSN_DUP_10_GA01 + - Leah + - Gregory + - 1943-08-27 00:00:00 + - CAS74783521GA01 + - HIV + - Probable + - 2025-11-28 12:00:00 + - Date of Report + - !!python/object/apply:decimal.Decimal + - '2026' + - REJECTED + - '900' +- !!python/tuple + - PSN_DUP_10_GA01 + - Brian + - Scott + - 1943-07-13 00:00:00 + - CAS29711900GA01 + - null + - Suspect + - 2026-03-02 12:00:00 + - Date of Diagnosis + - !!python/object/apply:decimal.Decimal + - '2024' + - COMPLETED + - '900' +- !!python/tuple + - PSN_DUP_1_GA01 + - Lindsay + - Nelson + - null + - CAS54964418GA01 + - HIV + - Not a Case + - 2025-06-17 12:00:00 + - Specimen Collection Date of Earliest Associated Lab + - !!python/object/apply:decimal.Decimal + - '2026' + - null + - '10274' +- !!python/tuple + - PSN_DUP_1_GA01 + - Timothy + - Warren + - 1998-03-09 00:00:00 + - CAS88319168GA01 + - 2019 Novel Coronavirus + - Probable + - 2025-07-20 12:00:00 + - Illness Onset Date + - null + - REJECTED + - '10274' +- !!python/tuple + - PSN_DUP_1_GA01 + - Dawn + - Taylor + - 1971-12-24 00:00:00 + - CAS21267237GA01 + - Syphilis, primary + - Not a Case + - 2025-12-29 12:00:00 + - Illness Onset Date + - null + - null + - '10274' +- !!python/tuple + - PSN_DUP_1_GA01 + - Jessica + - Stanley + - 2020-04-30 00:00:00 + - CAS26782572GA01 + - Chlamydia trachomatis infection + - Probable + - 2025-07-01 12:00:00 + - Specimen Collection Date of Earliest Associated Lab + - !!python/object/apply:decimal.Decimal + - '2024' + - APPROVED + - '10280' +- !!python/tuple + - PSN_DUP_1_GA01 + - William + - null + - 2007-09-28 00:00:00 + - CAS28808678GA01 + - Chlamydia trachomatis infection + - Not a Case + - 2025-11-25 12:00:00 + - Date of Report + - null + - REJECTED + - '10280' +- !!python/tuple + - PSN_DUP_1_GA01 + - Michael + - Jordan + - 1950-01-04 00:00:00 + - CAS49375156GA01 + - Hepatitis A, acute + - Confirmed + - 2026-01-05 12:00:00 + - Illness Onset Date + - null + - null + - '10280' +- !!python/tuple + - PSN_DUP_1_GA01 + - James + - Kelly + - 2004-03-18 00:00:00 + - CAS96825515GA01 + - Syphilis, primary + - null + - 2026-01-27 12:00:00 + - Date of Diagnosis + - !!python/object/apply:decimal.Decimal + - '2016' + - COMPLETED + - '10280' +- !!python/tuple + - PSN_DUP_1_GA01 + - Melissa + - Hawkins + - 1980-11-27 00:00:00 + - CAS64276605GA01 + - Gonorrhea + - Suspect + - 2026-04-01 12:00:00 + - Date of Report + - null + - null + - '10280' +- !!python/tuple + - PSN_DUP_1_GA01 + - Denise + - Hall + - 1999-12-15 00:00:00 + - CAS22007214GA01 + - 2019 Novel Coronavirus + - Probable + - 2025-06-14 12:00:00 + - Specimen Collection Date of Earliest Associated Lab + - null + - APPROVED + - '10311' +- !!python/tuple + - PSN_DUP_1_GA01 + - Joseph + - Anderson + - 1954-06-09 00:00:00 + - CAS37321124GA01 + - Syphilis, primary + - Suspect + - 2025-08-14 12:00:00 + - Date of Report + - !!python/object/apply:decimal.Decimal + - '2026' + - COMPLETED + - '10311' +- !!python/tuple + - PSN_DUP_1_GA01 + - Sara + - Ryan + - 1998-01-03 00:00:00 + - CAS79782527GA01 + - 2019 Novel Coronavirus + - Confirmed + - 2025-08-22 12:00:00 + - Investigation Start Date + - !!python/object/apply:decimal.Decimal + - '2026' + - REJECTED + - '10311' +- !!python/tuple + - PSN_DUP_1_GA01 + - Brandon + - Cox + - 2018-04-16 00:00:00 + - CAS42823140GA01 + - 2019 Novel Coronavirus + - null + - 2025-11-05 12:00:00 + - Investigation Start Date + - !!python/object/apply:decimal.Decimal + - '2016' + - null + - '10311' +- !!python/tuple + - PSN_DUP_1_GA01 + - John + - Taylor + - 1935-09-13 00:00:00 + - CAS46913810GA01 + - 2019 Novel Coronavirus + - null + - 2025-12-07 12:00:00 + - Date of Report + - null + - null + - '10311' +- !!python/tuple + - PSN_DUP_1_GA01 + - Julie + - Wall + - 2016-07-17 00:00:00 + - CAS91390501GA01 + - Syphilis, primary + - Not a Case + - 2025-08-27 12:00:00 + - Investigation Start Date + - !!python/object/apply:decimal.Decimal + - '2015' + - COMPLETED + - '11065' +- !!python/tuple + - PSN_DUP_1_GA01 + - Melissa + - Alvarado + - 1942-07-27 00:00:00 + - CAS11298197GA01 + - 2019 Novel Coronavirus + - Not a Case + - 2026-01-26 12:00:00 + - Date of Diagnosis + - null + - COMPLETED + - '11065' +- !!python/tuple + - PSN_DUP_1_GA01 + - James + - Smith + - 1940-09-26 00:00:00 + - CAS43189803GA01 + - HIV + - Not a Case + - 2026-04-10 12:00:00 + - Investigation Start Date + - !!python/object/apply:decimal.Decimal + - '2015' + - REJECTED + - '11065' +- !!python/tuple + - PSN_DUP_1_GA01 + - Madeline + - Ruiz + - 1985-12-21 00:00:00 + - CAS22225702GA01 + - Syphilis, primary + - Not a Case + - 2025-10-13 12:00:00 + - Investigation Start Date + - !!python/object/apply:decimal.Decimal + - '2022' + - null + - '900' +- !!python/tuple + - PSN_DUP_1_GA01 + - Angela + - null + - null + - CAS45000508GA01 + - 2019 Novel Coronavirus + - null + - 2025-11-01 12:00:00 + - Specimen Collection Date of Earliest Associated Lab + - !!python/object/apply:decimal.Decimal + - '2026' + - REJECTED + - '900' +- !!python/tuple + - PSN_DUP_2_GA01 + - Brandon + - Charles + - 1961-06-22 00:00:00 + - CAS88598977GA01 + - Hepatitis A, acute + - Confirmed + - 2026-02-21 12:00:00 + - Investigation Start Date + - null + - COMPLETED + - '10110' +- !!python/tuple + - PSN_DUP_2_GA01 + - David + - null + - 1986-08-02 00:00:00 + - CAS43311626GA01 + - Gonorrhea + - Confirmed + - 2026-04-17 12:00:00 + - Date of Diagnosis + - null + - REJECTED + - '10110' +- !!python/tuple + - PSN_DUP_2_GA01 + - Jill + - Cook + - 1929-10-28 00:00:00 + - CAS88101741GA01 + - HIV + - null + - 2025-09-28 12:00:00 + - Date of Diagnosis + - !!python/object/apply:decimal.Decimal + - '2023' + - REJECTED + - '10280' +- !!python/tuple + - PSN_DUP_2_GA01 + - Jonathan + - Conley + - 1980-10-10 00:00:00 + - CAS12550658GA01 + - 2019 Novel Coronavirus + - Suspect + - 2025-10-10 12:00:00 + - Specimen Collection Date of Earliest Associated Lab + - null + - null + - '10280' +- !!python/tuple + - PSN_DUP_2_GA01 + - Jessica + - Cabrera + - 2024-02-14 00:00:00 + - CAS21496211GA01 + - Syphilis, primary + - null + - 2025-10-13 12:00:00 + - Specimen Collection Date of Earliest Associated Lab + - !!python/object/apply:decimal.Decimal + - '2020' + - REJECTED + - '10280' +- !!python/tuple + - PSN_DUP_2_GA01 + - Timothy + - Anderson + - 1986-04-19 00:00:00 + - CAS22507745GA01 + - HIV + - Not a Case + - 2025-12-10 12:00:00 + - Investigation Start Date + - !!python/object/apply:decimal.Decimal + - '2019' + - null + - '10280' +- !!python/tuple + - PSN_DUP_2_GA01 + - Samantha + - Hall + - 2016-05-16 00:00:00 + - CAS80888325GA01 + - HIV + - null + - 2025-07-04 12:00:00 + - Investigation Start Date + - !!python/object/apply:decimal.Decimal + - '2019' + - REJECTED + - '10311' +- !!python/tuple + - PSN_DUP_2_GA01 + - Andrew + - Love + - 1929-03-04 00:00:00 + - CAS30636590GA01 + - HIV + - Suspect + - 2025-11-17 12:00:00 + - Illness Onset Date + - null + - null + - '10311' +- !!python/tuple + - PSN_DUP_2_GA01 + - David + - Dunlap + - 1930-06-18 00:00:00 + - CAS54499873GA01 + - Gonorrhea + - null + - 2025-12-17 12:00:00 + - Date of Report + - null + - APPROVED + - '10311' +- !!python/tuple + - PSN_DUP_2_GA01 + - Anthony + - Ortiz + - 2003-01-05 00:00:00 + - CAS73360324GA01 + - Chlamydia trachomatis infection + - Not a Case + - 2026-04-29 12:00:00 + - Specimen Collection Date of Earliest Associated Lab + - !!python/object/apply:decimal.Decimal + - '2015' + - APPROVED + - '10311' +- !!python/tuple + - PSN_DUP_2_GA01 + - Andrew + - Nguyen + - null + - CAS64362516GA01 + - Gonorrhea + - Confirmed + - 2025-06-02 12:00:00 + - Investigation Start Date + - null + - APPROVED + - '900' +- !!python/tuple + - PSN_DUP_2_GA01 + - David + - Green + - null + - CAS73187139GA01 + - Syphilis, primary + - Suspect + - 2025-08-21 12:00:00 + - Date of Report + - !!python/object/apply:decimal.Decimal + - '2024' + - COMPLETED + - '900' +- !!python/tuple + - PSN_DUP_2_GA01 + - Michael + - Flores + - 1989-08-07 00:00:00 + - CAS41943272GA01 + - Chlamydia trachomatis infection + - null + - 2025-09-11 12:00:00 + - Illness Onset Date + - !!python/object/apply:decimal.Decimal + - '2021' + - null + - '900' +- !!python/tuple + - PSN_DUP_3_GA01 + - Diana + - Bass + - 1987-07-12 00:00:00 + - CAS65684858GA01 + - HIV + - Probable + - 2025-05-28 12:00:00 + - Illness Onset Date + - !!python/object/apply:decimal.Decimal + - '2020' + - null + - '10110' +- !!python/tuple + - PSN_DUP_3_GA01 + - Eric + - Morris + - 1930-06-26 00:00:00 + - CAS15360735GA01 + - Hepatitis A, acute + - Suspect + - 2025-09-04 12:00:00 + - Illness Onset Date + - !!python/object/apply:decimal.Decimal + - '2020' + - null + - '10110' +- !!python/tuple + - PSN_DUP_3_GA01 + - Tony + - Welch + - 1943-03-17 00:00:00 + - CAS20846331GA01 + - Syphilis, primary + - null + - 2025-09-23 12:00:00 + - Investigation Start Date + - !!python/object/apply:decimal.Decimal + - '2022' + - REJECTED + - '10110' +- !!python/tuple + - PSN_DUP_3_GA01 + - Colin + - Barnett + - 2006-12-21 00:00:00 + - CAS99586100GA01 + - Chlamydia trachomatis infection + - Not a Case + - 2025-09-27 12:00:00 + - Investigation Start Date + - !!python/object/apply:decimal.Decimal + - '2016' + - null + - '10110' +- !!python/tuple + - PSN_DUP_3_GA01 + - Kelly + - Garcia + - 1958-06-19 00:00:00 + - CAS83212334GA01 + - Chlamydia trachomatis infection + - Probable + - 2026-01-09 12:00:00 + - Specimen Collection Date of Earliest Associated Lab + - !!python/object/apply:decimal.Decimal + - '2026' + - APPROVED + - '10110' +- !!python/tuple + - PSN_DUP_3_GA01 + - Jennifer + - Sellers + - 2010-08-14 00:00:00 + - CAS55735904GA01 + - Hepatitis A, acute + - Confirmed + - 2026-04-28 12:00:00 + - Illness Onset Date + - !!python/object/apply:decimal.Decimal + - '2017' + - null + - '10110' +- !!python/tuple + - PSN_DUP_3_GA01 + - Erica + - Sloan + - 2005-08-23 00:00:00 + - CAS50004466GA01 + - 2019 Novel Coronavirus + - Suspect + - 2025-07-12 12:00:00 + - Investigation Start Date + - !!python/object/apply:decimal.Decimal + - '2017' + - null + - '10311' +- !!python/tuple + - PSN_DUP_3_GA01 + - Philip + - Vance + - 1984-11-23 00:00:00 + - CAS59099345GA01 + - Chlamydia trachomatis infection + - null + - 2026-02-07 12:00:00 + - Specimen Collection Date of Earliest Associated Lab + - !!python/object/apply:decimal.Decimal + - '2017' + - null + - '10311' +- !!python/tuple + - PSN_DUP_3_GA01 + - Mark + - Meyer + - 1937-02-01 00:00:00 + - CAS32083803GA01 + - Syphilis, primary + - Suspect + - 2025-10-08 12:00:00 + - Date of Report + - !!python/object/apply:decimal.Decimal + - '2015' + - REJECTED + - '11065' +- !!python/tuple + - PSN_DUP_3_GA01 + - Matthew + - null + - 2022-01-09 00:00:00 + - CAS66722344GA01 + - 2019 Novel Coronavirus + - Not a Case + - 2026-03-05 12:00:00 + - Date of Diagnosis + - !!python/object/apply:decimal.Decimal + - '2019' + - REJECTED + - '11065' +- !!python/tuple + - PSN_DUP_3_GA01 + - Lindsey + - Rogers + - 1989-02-07 00:00:00 + - CAS95977279GA01 + - Syphilis, primary + - null + - 2026-04-24 12:00:00 + - Investigation Start Date + - null + - null + - '11065' +- !!python/tuple + - PSN_DUP_3_GA01 + - Stacy + - Hopkins + - 2023-02-01 00:00:00 + - CAS86015183GA01 + - 2019 Novel Coronavirus + - Not a Case + - 2025-09-01 12:00:00 + - Illness Onset Date + - !!python/object/apply:decimal.Decimal + - '2025' + - APPROVED + - '900' +- !!python/tuple + - PSN_DUP_3_GA01 + - Amber + - Lindsey + - 1936-06-13 00:00:00 + - CAS27447248GA01 + - Chlamydia trachomatis infection + - null + - 2025-11-09 12:00:00 + - Specimen Collection Date of Earliest Associated Lab + - !!python/object/apply:decimal.Decimal + - '2020' + - null + - '900' +- !!python/tuple + - PSN_DUP_4_GA01 + - Deborah + - Nielsen + - 2010-11-27 00:00:00 + - CAS54327148GA01 + - Hepatitis A, acute + - Confirmed + - 2025-07-22 12:00:00 + - Date of Diagnosis + - !!python/object/apply:decimal.Decimal + - '2015' + - REJECTED + - '10110' +- !!python/tuple + - PSN_DUP_4_GA01 + - Antonio + - Walker + - 1954-07-03 00:00:00 + - CAS49203644GA01 + - null + - Suspect + - 2025-08-22 12:00:00 + - Date of Report + - !!python/object/apply:decimal.Decimal + - '2018' + - COMPLETED + - '10110' +- !!python/tuple + - PSN_DUP_4_GA01 + - Danny + - Walker + - 1940-05-24 00:00:00 + - CAS67061186GA01 + - Gonorrhea + - null + - 2025-10-13 12:00:00 + - Date of Diagnosis + - null + - null + - '10110' +- !!python/tuple + - PSN_DUP_4_GA01 + - Howard + - Marsh + - 2011-06-04 00:00:00 + - CAS25384377GA01 + - Syphilis, primary + - Suspect + - 2025-10-30 12:00:00 + - Date of Diagnosis + - !!python/object/apply:decimal.Decimal + - '2020' + - REJECTED + - '10110' +- !!python/tuple + - PSN_DUP_4_GA01 + - Susan + - Mendoza + - 1971-04-20 00:00:00 + - CAS39410942GA01 + - 2019 Novel Coronavirus + - Probable + - 2026-04-01 12:00:00 + - Illness Onset Date + - !!python/object/apply:decimal.Decimal + - '2023' + - COMPLETED + - '10110' +- !!python/tuple + - PSN_DUP_4_GA01 + - William + - Davis + - null + - CAS28566572GA01 + - Chlamydia trachomatis infection + - null + - 2025-06-16 12:00:00 + - Date of Report + - !!python/object/apply:decimal.Decimal + - '2026' + - REJECTED + - '10280' +- !!python/tuple + - PSN_DUP_4_GA01 + - Stephen + - Hull + - 1996-07-06 00:00:00 + - CAS14438720GA01 + - Syphilis, primary + - Not a Case + - 2025-08-18 12:00:00 + - Date of Diagnosis + - !!python/object/apply:decimal.Decimal + - '2016' + - COMPLETED + - '10280' +- !!python/tuple + - PSN_DUP_4_GA01 + - Lauren + - Guerra + - 1932-05-01 00:00:00 + - CAS68848427GA01 + - Hepatitis A, acute + - null + - 2025-12-09 12:00:00 + - Illness Onset Date + - !!python/object/apply:decimal.Decimal + - '2023' + - null + - '10311' +- !!python/tuple + - PSN_DUP_4_GA01 + - Jenna + - Clarke + - 1983-09-21 00:00:00 + - CAS10734097GA01 + - Hepatitis A, acute + - Confirmed + - 2025-12-15 12:00:00 + - Date of Report + - !!python/object/apply:decimal.Decimal + - '2020' + - null + - '10311' +- !!python/tuple + - PSN_DUP_4_GA01 + - Caleb + - Smith + - 1981-04-17 00:00:00 + - CAS40158366GA01 + - Chlamydia trachomatis infection + - Confirmed + - 2026-04-13 12:00:00 + - Date of Diagnosis + - !!python/object/apply:decimal.Decimal + - '2026' + - null + - '10311' +- !!python/tuple + - PSN_DUP_4_GA01 + - Megan + - Parsons + - 1948-06-24 00:00:00 + - CAS53524491GA01 + - Chlamydia trachomatis infection + - Confirmed + - 2025-12-05 12:00:00 + - Specimen Collection Date of Earliest Associated Lab + - !!python/object/apply:decimal.Decimal + - '2026' + - APPROVED + - '11065' +- !!python/tuple + - PSN_DUP_4_GA01 + - Sandra + - Fry + - 1965-07-17 00:00:00 + - CAS15345470GA01 + - Syphilis, primary + - Suspect + - 2026-01-28 12:00:00 + - Specimen Collection Date of Earliest Associated Lab + - null + - APPROVED + - '11065' +- !!python/tuple + - PSN_DUP_4_GA01 + - Elizabeth + - Jackson + - 1987-03-24 00:00:00 + - CAS98261798GA01 + - Hepatitis A, acute + - Not a Case + - 2025-09-09 12:00:00 + - Investigation Start Date + - !!python/object/apply:decimal.Decimal + - '2017' + - APPROVED + - '900' +- !!python/tuple + - PSN_DUP_4_GA01 + - Lindsey + - Lee + - 1935-02-19 00:00:00 + - CAS73481353GA01 + - Chlamydia trachomatis infection + - Probable + - 2026-03-22 12:00:00 + - Investigation Start Date + - null + - COMPLETED + - '900' +- !!python/tuple + - PSN_DUP_4_GA01 + - null + - null + - 1962-04-16 00:00:00 + - CAS63339667GA01 + - Chlamydia trachomatis infection + - Suspect + - 2026-03-25 12:00:00 + - Illness Onset Date + - null + - REJECTED + - '900' +- !!python/tuple + - PSN_DUP_5_GA01 + - null + - Martinez + - 2012-12-13 00:00:00 + - CAS56189726GA01 + - HIV + - null + - 2025-08-18 12:00:00 + - Investigation Start Date + - !!python/object/apply:decimal.Decimal + - '2024' + - APPROVED + - '10110' +- !!python/tuple + - PSN_DUP_5_GA01 + - Trevor + - Brown + - null + - CAS46024950GA01 + - Syphilis, primary + - null + - 2025-10-10 12:00:00 + - Illness Onset Date + - !!python/object/apply:decimal.Decimal + - '2020' + - APPROVED + - '10110' +- !!python/tuple + - PSN_DUP_5_GA01 + - null + - Dominguez + - 1973-09-22 00:00:00 + - CAS53038948GA01 + - Syphilis, primary + - Suspect + - 2025-05-15 12:00:00 + - Investigation Start Date + - null + - null + - '10274' +- !!python/tuple + - PSN_DUP_5_GA01 + - Edward + - Moore + - 1986-02-24 00:00:00 + - CAS38389345GA01 + - Syphilis, primary + - null + - 2025-07-03 12:00:00 + - Date of Report + - !!python/object/apply:decimal.Decimal + - '2024' + - null + - '10274' +- !!python/tuple + - PSN_DUP_5_GA01 + - Dale + - Romero + - 1940-12-21 00:00:00 + - CAS57197152GA01 + - Syphilis, primary + - Not a Case + - 2026-01-18 12:00:00 + - Date of Report + - !!python/object/apply:decimal.Decimal + - '2019' + - REJECTED + - '10274' +- !!python/tuple + - PSN_DUP_5_GA01 + - Christopher + - Allen + - 1981-02-04 00:00:00 + - CAS98641164GA01 + - Chlamydia trachomatis infection + - Probable + - 2026-04-09 12:00:00 + - Specimen Collection Date of Earliest Associated Lab + - !!python/object/apply:decimal.Decimal + - '2018' + - null + - '10274' +- !!python/tuple + - PSN_DUP_6_GA01 + - Jessica + - Jacobs + - 1934-05-13 00:00:00 + - CAS46160937GA01 + - Chlamydia trachomatis infection + - Confirmed + - 2025-07-15 12:00:00 + - Investigation Start Date + - !!python/object/apply:decimal.Decimal + - '2017' + - null + - '10110' +- !!python/tuple + - PSN_DUP_6_GA01 + - Robert + - Sanders + - 1963-02-12 00:00:00 + - CAS13579612GA01 + - Chlamydia trachomatis infection + - Suspect + - 2025-10-24 12:00:00 + - Date of Diagnosis + - !!python/object/apply:decimal.Decimal + - '2026' + - COMPLETED + - '10110' +- !!python/tuple + - PSN_DUP_6_GA01 + - Christopher + - Phillips + - 2000-11-03 00:00:00 + - CAS27637794GA01 + - 2019 Novel Coronavirus + - Probable + - 2025-10-24 12:00:00 + - Illness Onset Date + - !!python/object/apply:decimal.Decimal + - '2016' + - null + - '10110' +- !!python/tuple + - PSN_DUP_6_GA01 + - Kelly + - Moore + - 1925-09-03 00:00:00 + - CAS24972279GA01 + - Hepatitis A, acute + - Not a Case + - 2025-08-01 12:00:00 + - Specimen Collection Date of Earliest Associated Lab + - !!python/object/apply:decimal.Decimal + - '2019' + - null + - '10274' +- !!python/tuple + - PSN_DUP_6_GA01 + - Leah + - Griffin + - 1929-10-10 00:00:00 + - CAS79029393GA01 + - 2019 Novel Coronavirus + - Suspect + - 2026-03-05 12:00:00 + - Date of Report + - !!python/object/apply:decimal.Decimal + - '2023' + - APPROVED + - '10274' +- !!python/tuple + - PSN_DUP_6_GA01 + - Gloria + - Wells + - 1934-07-24 00:00:00 + - CAS30486849GA01 + - Gonorrhea + - null + - 2026-03-19 12:00:00 + - Specimen Collection Date of Earliest Associated Lab + - null + - null + - '10274' +- !!python/tuple + - PSN_DUP_6_GA01 + - Shelley + - Reynolds + - 1993-12-29 00:00:00 + - CAS84227466GA01 + - Chlamydia trachomatis infection + - Suspect + - 2025-06-12 12:00:00 + - Illness Onset Date + - null + - COMPLETED + - '10280' +- !!python/tuple + - PSN_DUP_6_GA01 + - Jeffery + - Huang + - 2003-12-24 00:00:00 + - CAS90143600GA01 + - Syphilis, primary + - null + - 2025-07-09 12:00:00 + - Date of Report + - !!python/object/apply:decimal.Decimal + - '2017' + - COMPLETED + - '10280' +- !!python/tuple + - PSN_DUP_6_GA01 + - null + - Mcknight + - 2003-09-08 00:00:00 + - CAS21674661GA01 + - HIV + - Not a Case + - 2025-11-16 12:00:00 + - Investigation Start Date + - !!python/object/apply:decimal.Decimal + - '2020' + - null + - '10280' +- !!python/tuple + - PSN_DUP_6_GA01 + - Jeffrey + - Galloway + - 2005-05-06 00:00:00 + - CAS78284040GA01 + - Syphilis, primary + - Probable + - 2025-12-27 12:00:00 + - Illness Onset Date + - !!python/object/apply:decimal.Decimal + - '2020' + - null + - '10280' +- !!python/tuple + - PSN_DUP_6_GA01 + - Patricia + - Sherman + - null + - CAS11889398GA01 + - 2019 Novel Coronavirus + - Not a Case + - 2026-01-27 12:00:00 + - Investigation Start Date + - !!python/object/apply:decimal.Decimal + - '2022' + - APPROVED + - '10280' +- !!python/tuple + - PSN_DUP_6_GA01 + - Anthony + - Haynes + - 2021-01-18 00:00:00 + - CAS89398174GA01 + - Gonorrhea + - Probable + - 2025-05-06 12:00:00 + - Specimen Collection Date of Earliest Associated Lab + - !!python/object/apply:decimal.Decimal + - '2022' + - null + - '10311' +- !!python/tuple + - PSN_DUP_6_GA01 + - James + - Jones + - 1992-02-19 00:00:00 + - CAS87490893GA01 + - Gonorrhea + - null + - 2025-08-12 12:00:00 + - Specimen Collection Date of Earliest Associated Lab + - !!python/object/apply:decimal.Decimal + - '2021' + - APPROVED + - '10311' +- !!python/tuple + - PSN_DUP_6_GA01 + - Christopher + - Beck + - 1990-11-20 00:00:00 + - CAS43606680GA01 + - Hepatitis A, acute + - Suspect + - 2025-09-08 12:00:00 + - Date of Report + - !!python/object/apply:decimal.Decimal + - '2026' + - APPROVED + - '10311' +- !!python/tuple + - PSN_DUP_6_GA01 + - Keith + - Adams + - 2012-01-03 00:00:00 + - CAS49276764GA01 + - Hepatitis A, acute + - Probable + - 2025-12-03 12:00:00 + - Date of Diagnosis + - !!python/object/apply:decimal.Decimal + - '2017' + - APPROVED + - '10311' +- !!python/tuple + - PSN_DUP_6_GA01 + - Howard + - Thomas + - 1991-09-27 00:00:00 + - CAS10819505GA01 + - Chlamydia trachomatis infection + - Not a Case + - 2025-12-10 12:00:00 + - Illness Onset Date + - null + - null + - '10311' +- !!python/tuple + - PSN_DUP_6_GA01 + - Keith + - Hughes + - 1970-10-31 00:00:00 + - CAS84252324GA01 + - Hepatitis A, acute + - Probable + - 2025-05-20 12:00:00 + - Investigation Start Date + - !!python/object/apply:decimal.Decimal + - '2015' + - null + - '11065' +- !!python/tuple + - PSN_DUP_6_GA01 + - William + - Frazier + - 2010-07-22 00:00:00 + - CAS96098221GA01 + - HIV + - Confirmed + - 2025-07-14 12:00:00 + - Date of Report + - !!python/object/apply:decimal.Decimal + - '2024' + - APPROVED + - '11065' +- !!python/tuple + - PSN_DUP_6_GA01 + - Donald + - Payne + - 1943-12-08 00:00:00 + - CAS32718459GA01 + - Gonorrhea + - Confirmed + - 2025-10-19 12:00:00 + - Specimen Collection Date of Earliest Associated Lab + - !!python/object/apply:decimal.Decimal + - '2023' + - null + - '11065' +- !!python/tuple + - PSN_DUP_6_GA01 + - Tina + - Allen + - 1964-01-10 00:00:00 + - CAS35320492GA01 + - Syphilis, primary + - Suspect + - 2025-06-02 12:00:00 + - Date of Report + - null + - null + - '900' +- !!python/tuple + - PSN_DUP_6_GA01 + - null + - Wood + - 1941-04-12 00:00:00 + - CAS19233013GA01 + - Gonorrhea + - null + - 2025-07-19 12:00:00 + - Date of Report + - !!python/object/apply:decimal.Decimal + - '2020' + - COMPLETED + - '900' +- !!python/tuple + - PSN_DUP_6_GA01 + - Kimberly + - Wilson + - 1933-04-10 00:00:00 + - CAS30937370GA01 + - Chlamydia trachomatis infection + - null + - 2026-02-04 12:00:00 + - Illness Onset Date + - !!python/object/apply:decimal.Decimal + - '2018' + - null + - '900' +- !!python/tuple + - PSN_DUP_6_GA01 + - Anna + - Flores + - 1972-06-17 00:00:00 + - CAS79119463GA01 + - HIV + - Probable + - 2026-03-23 12:00:00 + - Date of Diagnosis + - !!python/object/apply:decimal.Decimal + - '2022' + - null + - '900' +- !!python/tuple + - PSN_DUP_7_GA01 + - Matthew + - Valenzuela + - 1961-08-18 00:00:00 + - CAS27956913GA01 + - Hepatitis A, acute + - Confirmed + - 2025-09-20 12:00:00 + - Illness Onset Date + - !!python/object/apply:decimal.Decimal + - '2015' + - null + - '10110' +- !!python/tuple + - PSN_DUP_7_GA01 + - Lucas + - Butler + - 1940-06-01 00:00:00 + - CAS80392240GA01 + - Hepatitis A, acute + - null + - 2025-11-15 12:00:00 + - Specimen Collection Date of Earliest Associated Lab + - null + - APPROVED + - '10110' +- !!python/tuple + - PSN_DUP_7_GA01 + - Sheila + - Johnson + - 1960-06-03 00:00:00 + - CAS74199033GA01 + - Hepatitis A, acute + - Not a Case + - 2025-07-13 12:00:00 + - Date of Diagnosis + - !!python/object/apply:decimal.Decimal + - '2019' + - APPROVED + - '10274' +- !!python/tuple + - PSN_DUP_7_GA01 + - Manuel + - Garcia + - 1941-08-03 00:00:00 + - CAS54735895GA01 + - 2019 Novel Coronavirus + - Probable + - 2026-02-06 12:00:00 + - Illness Onset Date + - !!python/object/apply:decimal.Decimal + - '2024' + - COMPLETED + - '10274' +- !!python/tuple + - PSN_DUP_7_GA01 + - Cassandra + - Johnson + - 1948-06-20 00:00:00 + - CAS53261270GA01 + - Gonorrhea + - null + - 2026-02-28 12:00:00 + - Date of Report + - null + - APPROVED + - '10274' +- !!python/tuple + - PSN_DUP_7_GA01 + - Jesse + - Reed + - 2010-02-21 00:00:00 + - CAS13209180GA01 + - Chlamydia trachomatis infection + - Confirmed + - 2026-04-27 12:00:00 + - Investigation Start Date + - null + - APPROVED + - '10274' +- !!python/tuple + - PSN_DUP_7_GA01 + - Michelle + - Cochran + - 1952-04-17 00:00:00 + - CAS99913412GA01 + - Syphilis, primary + - Suspect + - 2025-08-15 12:00:00 + - Specimen Collection Date of Earliest Associated Lab + - !!python/object/apply:decimal.Decimal + - '2020' + - REJECTED + - '10311' +- !!python/tuple + - PSN_DUP_7_GA01 + - Charles + - Norton + - 2003-01-02 00:00:00 + - CAS70665302GA01 + - Chlamydia trachomatis infection + - null + - 2025-09-01 12:00:00 + - Illness Onset Date + - !!python/object/apply:decimal.Decimal + - '2019' + - APPROVED + - '10311' +- !!python/tuple + - PSN_DUP_7_GA01 + - null + - Hurley + - 1956-08-12 00:00:00 + - CAS27307598GA01 + - HIV + - null + - 2025-11-07 12:00:00 + - Date of Diagnosis + - null + - REJECTED + - '10311' +- !!python/tuple + - PSN_DUP_7_GA01 + - Frederick + - Preston + - 1941-03-19 00:00:00 + - CAS97729428GA01 + - Chlamydia trachomatis infection + - null + - 2025-08-21 12:00:00 + - Investigation Start Date + - !!python/object/apply:decimal.Decimal + - '2016' + - null + - '11065' +- !!python/tuple + - PSN_DUP_7_GA01 + - Nathan + - Sullivan + - 1982-05-30 00:00:00 + - CAS20605783GA01 + - Syphilis, primary + - Probable + - 2025-12-28 12:00:00 + - Illness Onset Date + - !!python/object/apply:decimal.Decimal + - '2021' + - REJECTED + - '11065' +- !!python/tuple + - PSN_DUP_7_GA01 + - null + - Olson + - 1962-09-27 00:00:00 + - CAS84102271GA01 + - 2019 Novel Coronavirus + - Confirmed + - 2026-01-11 12:00:00 + - Date of Report + - !!python/object/apply:decimal.Decimal + - '2026' + - REJECTED + - '11065' +- !!python/tuple + - PSN_DUP_7_GA01 + - Shelly + - Gonzalez + - 1985-02-23 00:00:00 + - CAS63238057GA01 + - HIV + - null + - 2025-06-13 12:00:00 + - Specimen Collection Date of Earliest Associated Lab + - null + - null + - '900' +- !!python/tuple + - PSN_DUP_7_GA01 + - Jerome + - Rojas + - 1970-02-08 00:00:00 + - CAS51523026GA01 + - Hepatitis A, acute + - null + - 2025-06-24 12:00:00 + - Investigation Start Date + - !!python/object/apply:decimal.Decimal + - '2022' + - APPROVED + - '900' +- !!python/tuple + - PSN_DUP_7_GA01 + - Martin + - Campos + - 1939-06-25 00:00:00 + - CAS82553061GA01 + - Gonorrhea + - null + - 2025-08-14 12:00:00 + - Date of Report + - null + - null + - '900' +- !!python/tuple + - PSN_DUP_7_GA01 + - Christopher + - Murphy + - 1993-06-16 00:00:00 + - CAS97219599GA01 + - Gonorrhea + - Confirmed + - 2025-08-23 12:00:00 + - Specimen Collection Date of Earliest Associated Lab + - null + - REJECTED + - '900' +- !!python/tuple + - PSN_DUP_7_GA01 + - Stephen + - Allen + - 1984-04-06 00:00:00 + - CAS77839607GA01 + - Gonorrhea + - Not a Case + - 2025-09-29 12:00:00 + - Investigation Start Date + - !!python/object/apply:decimal.Decimal + - '2015' + - null + - '900' +- !!python/tuple + - PSN_DUP_7_GA01 + - Christina + - Turner + - 1980-09-08 00:00:00 + - CAS33357554GA01 + - Chlamydia trachomatis infection + - Probable + - 2026-01-07 12:00:00 + - Specimen Collection Date of Earliest Associated Lab + - !!python/object/apply:decimal.Decimal + - '2018' + - REJECTED + - '900' +- !!python/tuple + - PSN_DUP_8_GA01 + - Jimmy + - Smith + - 1934-05-03 00:00:00 + - CAS54372866GA01 + - Gonorrhea + - null + - 2025-08-28 12:00:00 + - Investigation Start Date + - !!python/object/apply:decimal.Decimal + - '2025' + - APPROVED + - '10110' +- !!python/tuple + - PSN_DUP_8_GA01 + - Duane + - Lee + - 1985-11-19 00:00:00 + - CAS83989546GA01 + - Syphilis, primary + - Not a Case + - 2025-09-04 12:00:00 + - Date of Diagnosis + - !!python/object/apply:decimal.Decimal + - '2020' + - COMPLETED + - '10110' +- !!python/tuple + - PSN_DUP_8_GA01 + - Angela + - null + - 1927-12-31 00:00:00 + - CAS84757265GA01 + - 2019 Novel Coronavirus + - Probable + - 2026-01-11 12:00:00 + - Date of Diagnosis + - !!python/object/apply:decimal.Decimal + - '2017' + - APPROVED + - '10110' +- !!python/tuple + - PSN_DUP_8_GA01 + - Ryan + - Gross + - 2022-11-10 00:00:00 + - CAS30534124GA01 + - Gonorrhea + - Confirmed + - 2025-07-22 12:00:00 + - Date of Diagnosis + - !!python/object/apply:decimal.Decimal + - '2022' + - null + - '10274' +- !!python/tuple + - PSN_DUP_8_GA01 + - Collin + - Clark + - 1989-10-20 00:00:00 + - null + - HIV + - Not a Case + - 2025-07-27 12:00:00 + - Date of Report + - !!python/object/apply:decimal.Decimal + - '2019' + - null + - '10274' +- !!python/tuple + - PSN_DUP_8_GA01 + - Lydia + - Newton + - 1966-09-04 00:00:00 + - CAS28850770GA01 + - Syphilis, primary + - Probable + - 2025-10-20 12:00:00 + - Illness Onset Date + - !!python/object/apply:decimal.Decimal + - '2022' + - APPROVED + - '10311' +- !!python/tuple + - PSN_DUP_8_GA01 + - James + - Robinson + - 1931-04-03 00:00:00 + - CAS30776478GA01 + - 2019 Novel Coronavirus + - Probable + - 2025-12-09 12:00:00 + - Date of Diagnosis + - !!python/object/apply:decimal.Decimal + - '2016' + - APPROVED + - '10311' +- !!python/tuple + - PSN_DUP_8_GA01 + - Christina + - Lowe + - 1982-02-04 00:00:00 + - CAS23754633GA01 + - Hepatitis A, acute + - Not a Case + - 2026-01-20 12:00:00 + - Investigation Start Date + - null + - APPROVED + - '10311' +- !!python/tuple + - PSN_DUP_8_GA01 + - Elizabeth + - May + - 1985-08-28 00:00:00 + - CAS22304198GA01 + - Hepatitis A, acute + - null + - 2026-02-18 12:00:00 + - Specimen Collection Date of Earliest Associated Lab + - !!python/object/apply:decimal.Decimal + - '2017' + - null + - '10311' +- !!python/tuple + - PSN_DUP_8_GA01 + - Alyssa + - Williams + - 2019-10-24 00:00:00 + - CAS10582186GA01 + - HIV + - Suspect + - 2026-02-24 12:00:00 + - Investigation Start Date + - !!python/object/apply:decimal.Decimal + - '2022' + - APPROVED + - '10311' +- !!python/tuple + - PSN_DUP_8_GA01 + - Debra + - Mcdaniel + - 1941-10-10 00:00:00 + - CAS87585294GA01 + - Chlamydia trachomatis infection + - Suspect + - 2026-05-01 12:00:00 + - Date of Report + - !!python/object/apply:decimal.Decimal + - '2024' + - COMPLETED + - '10311' +- !!python/tuple + - PSN_DUP_8_GA01 + - Matthew + - White + - 1968-03-01 00:00:00 + - CAS92286747GA01 + - Gonorrhea + - Suspect + - 2025-06-29 12:00:00 + - Date of Diagnosis + - !!python/object/apply:decimal.Decimal + - '2026' + - null + - '11065' +- !!python/tuple + - PSN_DUP_8_GA01 + - Kristopher + - Hall + - 1998-03-13 00:00:00 + - CAS46361787GA01 + - Syphilis, primary + - null + - 2025-07-10 12:00:00 + - Specimen Collection Date of Earliest Associated Lab + - !!python/object/apply:decimal.Decimal + - '2020' + - COMPLETED + - '11065' +- !!python/tuple + - PSN_DUP_8_GA01 + - Wendy + - Atkinson + - 1977-07-25 00:00:00 + - CAS28048483GA01 + - 2019 Novel Coronavirus + - Not a Case + - 2025-08-09 12:00:00 + - Specimen Collection Date of Earliest Associated Lab + - !!python/object/apply:decimal.Decimal + - '2020' + - COMPLETED + - '11065' +- !!python/tuple + - PSN_DUP_8_GA01 + - Heather + - Padilla + - 1965-05-28 00:00:00 + - CAS42560305GA01 + - 2019 Novel Coronavirus + - Confirmed + - 2025-11-27 12:00:00 + - Investigation Start Date + - !!python/object/apply:decimal.Decimal + - '2015' + - REJECTED + - '11065' +- !!python/tuple + - PSN_DUP_8_GA01 + - Albert + - Jordan + - 1954-12-06 00:00:00 + - CAS50213043GA01 + - Gonorrhea + - Confirmed + - 2025-12-20 12:00:00 + - Specimen Collection Date of Earliest Associated Lab + - !!python/object/apply:decimal.Decimal + - '2021' + - null + - '11065' +- !!python/tuple + - PSN_DUP_8_GA01 + - Richard + - null + - 2022-10-10 00:00:00 + - CAS52148834GA01 + - 2019 Novel Coronavirus + - null + - 2026-01-08 12:00:00 + - Date of Report + - !!python/object/apply:decimal.Decimal + - '2015' + - null + - '900' +- !!python/tuple + - PSN_DUP_8_GA01 + - Logan + - Mann + - 1982-02-08 00:00:00 + - CAS97131500GA01 + - Chlamydia trachomatis infection + - null + - 2026-04-13 12:00:00 + - Date of Diagnosis + - !!python/object/apply:decimal.Decimal + - '2016' + - REJECTED + - '900' +- !!python/tuple + - PSN_DUP_9_GA01 + - Andrea + - Gray + - 2007-11-15 00:00:00 + - CAS39891163GA01 + - 2019 Novel Coronavirus + - Suspect + - 2025-08-25 12:00:00 + - Investigation Start Date + - !!python/object/apply:decimal.Decimal + - '2025' + - APPROVED + - '10110' +- !!python/tuple + - PSN_DUP_9_GA01 + - John + - Odonnell + - 1930-06-23 00:00:00 + - CAS75569635GA01 + - Hepatitis A, acute + - Suspect + - 2025-11-24 12:00:00 + - Date of Diagnosis + - !!python/object/apply:decimal.Decimal + - '2024' + - REJECTED + - '10110' +- !!python/tuple + - PSN_DUP_9_GA01 + - David + - Calderon + - null + - CAS56239991GA01 + - HIV + - Suspect + - 2026-03-11 12:00:00 + - Date of Diagnosis + - !!python/object/apply:decimal.Decimal + - '2019' + - null + - '10110' +- !!python/tuple + - PSN_DUP_9_GA01 + - James + - Hardy + - 1944-11-21 00:00:00 + - CAS90985229GA01 + - 2019 Novel Coronavirus + - Not a Case + - 2025-05-08 12:00:00 + - Date of Diagnosis + - !!python/object/apply:decimal.Decimal + - '2019' + - REJECTED + - '10274' +- !!python/tuple + - PSN_DUP_9_GA01 + - Julie + - Phillips + - 1930-11-10 00:00:00 + - CAS35319707GA01 + - Gonorrhea + - Not a Case + - 2025-05-12 12:00:00 + - Illness Onset Date + - !!python/object/apply:decimal.Decimal + - '2016' + - COMPLETED + - '10274' +- !!python/tuple + - PSN_DUP_9_GA01 + - Jaclyn + - null + - 1954-05-13 00:00:00 + - CAS11305024GA01 + - 2019 Novel Coronavirus + - Suspect + - 2025-07-19 12:00:00 + - Investigation Start Date + - !!python/object/apply:decimal.Decimal + - '2018' + - null + - '10274' +- !!python/tuple + - PSN_DUP_9_GA01 + - Charles + - Landry + - 2025-02-05 00:00:00 + - CAS31203129GA01 + - Gonorrhea + - Not a Case + - 2025-08-14 12:00:00 + - Date of Diagnosis + - !!python/object/apply:decimal.Decimal + - '2021' + - null + - '10274' +- !!python/tuple + - PSN_DUP_9_GA01 + - Lee + - Thompson + - 2017-06-21 00:00:00 + - CAS60576565GA01 + - Gonorrhea + - Not a Case + - 2025-11-27 12:00:00 + - Specimen Collection Date of Earliest Associated Lab + - !!python/object/apply:decimal.Decimal + - '2020' + - APPROVED + - '10274' +- !!python/tuple + - PSN_DUP_9_GA01 + - Gary + - Jennings + - 2018-07-03 00:00:00 + - CAS45503367GA01 + - Gonorrhea + - null + - 2025-12-11 12:00:00 + - Date of Diagnosis + - !!python/object/apply:decimal.Decimal + - '2024' + - APPROVED + - '10274' +- !!python/tuple + - PSN_DUP_9_GA01 + - Ebony + - Walter + - 1987-10-08 00:00:00 + - CAS15066382GA01 + - 2019 Novel Coronavirus + - Not a Case + - 2026-04-01 12:00:00 + - Investigation Start Date + - !!python/object/apply:decimal.Decimal + - '2022' + - null + - '10274' +- !!python/tuple + - PSN_DUP_9_GA01 + - Sally + - Smith + - null + - CAS71492815GA01 + - Chlamydia trachomatis infection + - Suspect + - 2025-05-19 12:00:00 + - Date of Diagnosis + - null + - COMPLETED + - '10280' +- !!python/tuple + - PSN_DUP_9_GA01 + - Natalie + - Henderson + - 1926-08-21 00:00:00 + - CAS48376603GA01 + - Chlamydia trachomatis infection + - Probable + - 2025-07-19 12:00:00 + - Date of Report + - !!python/object/apply:decimal.Decimal + - '2019' + - COMPLETED + - '10280' +- !!python/tuple + - PSN_DUP_9_GA01 + - Shawn + - Jacobs + - 1935-05-13 00:00:00 + - CAS49580505GA01 + - 2019 Novel Coronavirus + - Not a Case + - 2025-08-28 12:00:00 + - Investigation Start Date + - !!python/object/apply:decimal.Decimal + - '2016' + - APPROVED + - '10280' +- !!python/tuple + - PSN_DUP_9_GA01 + - James + - Bowers + - 1976-11-29 00:00:00 + - CAS48387144GA01 + - Syphilis, primary + - Probable + - 2025-12-06 12:00:00 + - Date of Report + - !!python/object/apply:decimal.Decimal + - '2021' + - REJECTED + - '10280' +- !!python/tuple + - PSN_DUP_9_GA01 + - Brandon + - Vang + - 1992-03-16 00:00:00 + - CAS93635734GA01 + - HIV + - null + - 2026-01-03 12:00:00 + - Illness Onset Date + - !!python/object/apply:decimal.Decimal + - '2021' + - REJECTED + - '10280' +- !!python/tuple + - PSN_DUP_9_GA01 + - Brent + - Kidd + - 2009-10-14 00:00:00 + - CAS23141087GA01 + - Syphilis, primary + - null + - 2026-04-21 12:00:00 + - Illness Onset Date + - !!python/object/apply:decimal.Decimal + - '2026' + - APPROVED + - '10280' +- !!python/tuple + - PSN_DUP_9_GA01 + - null + - Barry + - 1939-06-19 00:00:00 + - CAS71335966GA01 + - Gonorrhea + - null + - 2026-04-24 12:00:00 + - Illness Onset Date + - !!python/object/apply:decimal.Decimal + - '2019' + - REJECTED + - '10280' +- !!python/tuple + - PSN_DUP_9_GA01 + - Amanda + - Morrow + - 1950-05-06 00:00:00 + - CAS66925500GA01 + - Chlamydia trachomatis infection + - Confirmed + - 2025-09-30 12:00:00 + - Specimen Collection Date of Earliest Associated Lab + - !!python/object/apply:decimal.Decimal + - '2015' + - null + - '10311' +- !!python/tuple + - PSN_DUP_9_GA01 + - Rebecca + - Bailey + - 1998-10-24 00:00:00 + - CAS36025314GA01 + - 2019 Novel Coronavirus + - Confirmed + - 2026-02-08 12:00:00 + - Investigation Start Date + - !!python/object/apply:decimal.Decimal + - '2024' + - null + - '10311' +- !!python/tuple + - PSN_DUP_9_GA01 + - Randy + - Garcia + - 1977-01-03 00:00:00 + - CAS93698993GA01 + - 2019 Novel Coronavirus + - Suspect + - 2026-02-10 12:00:00 + - Date of Diagnosis + - !!python/object/apply:decimal.Decimal + - '2023' + - COMPLETED + - '10311' +- !!python/tuple + - PSN_DUP_9_GA01 + - Jose + - Green + - 1970-06-03 00:00:00 + - null + - 2019 Novel Coronavirus + - Not a Case + - 2026-03-13 12:00:00 + - Date of Report + - !!python/object/apply:decimal.Decimal + - '2019' + - COMPLETED + - '10311' +- !!python/tuple + - PSN_DUP_9_GA01 + - null + - Foster + - 1985-02-16 00:00:00 + - CAS27919925GA01 + - Chlamydia trachomatis infection + - Suspect + - 2025-06-14 12:00:00 + - Illness Onset Date + - !!python/object/apply:decimal.Decimal + - '2024' + - null + - '11065' +- !!python/tuple + - PSN_DUP_9_GA01 + - David + - Turner + - 1979-03-25 00:00:00 + - CAS46836194GA01 + - Syphilis, primary + - Probable + - 2025-08-10 12:00:00 + - Illness Onset Date + - !!python/object/apply:decimal.Decimal + - '2024' + - COMPLETED + - '11065' +- !!python/tuple + - PSN_DUP_9_GA01 + - Samantha + - Martinez + - 1938-10-24 00:00:00 + - CAS43446826GA01 + - Syphilis, primary + - Not a Case + - 2025-08-14 12:00:00 + - Date of Diagnosis + - !!python/object/apply:decimal.Decimal + - '2018' + - null + - '11065' +- !!python/tuple + - PSN_DUP_9_GA01 + - Erik + - Watson + - 1953-12-01 00:00:00 + - CAS91846696GA01 + - 2019 Novel Coronavirus + - null + - 2025-08-27 12:00:00 + - Illness Onset Date + - !!python/object/apply:decimal.Decimal + - '2020' + - COMPLETED + - '11065' +- !!python/tuple + - PSN_DUP_9_GA01 + - Megan + - Kelley + - 1957-01-19 00:00:00 + - CAS50119441GA01 + - Gonorrhea + - Suspect + - 2025-11-30 12:00:00 + - Specimen Collection Date of Earliest Associated Lab + - !!python/object/apply:decimal.Decimal + - '2024' + - null + - '11065' +- !!python/tuple + - PSN_DUP_9_GA01 + - Stephanie + - Jones + - 1972-04-27 00:00:00 + - CAS16164431GA01 + - Gonorrhea + - Not a Case + - 2026-02-08 12:00:00 + - Specimen Collection Date of Earliest Associated Lab + - !!python/object/apply:decimal.Decimal + - '2023' + - null + - '11065' diff --git a/cdc-sandbox/docker-compose.nbs6.yml b/cdc-sandbox/docker-compose.nbs6.yml index e91ba034c6..4ca4925baf 100644 --- a/cdc-sandbox/docker-compose.nbs6.yml +++ b/cdc-sandbox/docker-compose.nbs6.yml @@ -32,6 +32,7 @@ services: sas: image: ghcr.io/cdcent/nbs7-sas-linux:v1.0.4 platform: linux/amd64 + container_name: "${COMPOSE_PROJECT_NAME}-sas" ports: - 2323:2323 environment: