diff --git a/epilepsy12/common_view_functions/calculate_kpi_functions/score_kpi_1.py b/epilepsy12/common_view_functions/calculate_kpi_functions/score_kpi_1.py index cfe89ac1..1ac1d06f 100644 --- a/epilepsy12/common_view_functions/calculate_kpi_functions/score_kpi_1.py +++ b/epilepsy12/common_view_functions/calculate_kpi_functions/score_kpi_1.py @@ -22,32 +22,40 @@ def score_kpi_1(registration_instance) -> int: assessment = registration_instance.assessment - # never saw a consultant OR neurologist! - if (assessment.consultant_paediatrician_referral_made == False) and ( - assessment.paediatric_neurologist_referral_made == False - ): - return KPI_SCORE["FAIL"] + # set variables which check if date fields complete for either consultant or neurologist + # It is important to use the dates only because the achieved fields were introduced later so it is possible that the achieved fields are not filled in but two dates are still present. + all_consultant_paediatrician_date_fields_complete = ( + assessment.consultant_paediatrician_referral_date is not None + and assessment.consultant_paediatrician_input_date is not None + ) + + all_consultant_paediatrician_date_fields_empty = ( + assessment.consultant_paediatrician_referral_date is None + and assessment.consultant_paediatrician_input_date is None + ) - # check all fields complete for either consultant or neurologist - all_consultant_paediatrician_fields_complete = ( - (assessment.consultant_paediatrician_referral_made is not None) - and (assessment.consultant_paediatrician_referral_date is not None) - and (assessment.consultant_paediatrician_input_date is not None) + some_consultant_paediatrician_date_fields_empty = ( + assessment.consultant_paediatrician_referral_date is None + or assessment.consultant_paediatrician_input_date is None ) - all_paediatric_neurologist_fields_complete = ( - (assessment.paediatric_neurologist_referral_made is not None) - and (assessment.paediatric_neurologist_referral_date is not None) - and (assessment.paediatric_neurologist_input_date is not None) + + all_paediatric_neurologist_date_fields_complete = ( + assessment.paediatric_neurologist_referral_date is not None + and assessment.paediatric_neurologist_input_date is not None ) - # incomplete - if (not all_consultant_paediatrician_fields_complete) and ( - not all_paediatric_neurologist_fields_complete - ): - return KPI_SCORE["NOT_SCORED"] + all_paediatric_neurologist_date_fields_empty = ( + assessment.paediatric_neurologist_referral_date is None + and assessment.paediatric_neurologist_input_date is None + ) + some_paediatric_neurologist_date_fields_empty = ( + assessment.paediatric_neurologist_referral_date is None + or assessment.paediatric_neurologist_input_date is None + ) + did_pass = None - # score KPI - if all_consultant_paediatrician_fields_complete: + # all all doubled date events + if all_consultant_paediatrician_date_fields_complete: passed_metric = ( assessment.consultant_paediatrician_input_date - assessment.consultant_paediatrician_referral_date @@ -55,9 +63,9 @@ def score_kpi_1(registration_instance) -> int: if passed_metric: return KPI_SCORE["PASS"] else: - return KPI_SCORE["FAIL"] + did_pass = False - elif all_paediatric_neurologist_fields_complete: + if all_paediatric_neurologist_date_fields_complete: passed_metric = ( assessment.paediatric_neurologist_input_date - assessment.paediatric_neurologist_referral_date @@ -65,4 +73,23 @@ def score_kpi_1(registration_instance) -> int: if passed_metric: return KPI_SCORE["PASS"] else: - return KPI_SCORE["FAIL"] + did_pass = False + + # leaves options where some fields are empty + if some_consultant_paediatrician_date_fields_empty: + if ( + assessment.consultant_paediatrician_referral_made is False + or assessment.consultant_paediatrician_input_achieved is False + ): + did_pass = False + if some_paediatric_neurologist_date_fields_empty: + if ( + assessment.paediatric_neurologist_referral_made is False + or assessment.paediatric_neurologist_input_achieved is False + ): + did_pass = False + + if did_pass is False: + return KPI_SCORE["FAIL"] + else: + return KPI_SCORE["NOT_SCORED"] diff --git a/epilepsy12/tests/common_view_functions_tests/calculate_kpi_tests/test_measure_1.py b/epilepsy12/tests/common_view_functions_tests/calculate_kpi_tests/test_measure_1.py index f721fd1f..ab964ef2 100644 --- a/epilepsy12/tests/common_view_functions_tests/calculate_kpi_tests/test_measure_1.py +++ b/epilepsy12/tests/common_view_functions_tests/calculate_kpi_tests/test_measure_1.py @@ -1,9 +1,5 @@ """ Measure 1 - paediatrician_with_expertise_in_epilepsies -- [x] Measure 1 passed (registration.kpi.paediatrician_with_expertise_in_epilepsies = 1) are seen within 2 weeks of referral -registration_instance.assessment.epilepsy_specialist_nurse_input_date <= (registration_instance.assessment.epilepsy_specialist_nurse_referral_date + relativedelta(days=+14)) -- [x] Measure 1 failed (registration.assessment.paediatrician_with_expertise_in_epilepsies = 0) if paediatrician seen after two weeks from referral or not referred -- [x] Measure 1 None if incomplete (assessment.consultant_paediatrician_referral_date or assessment.consultant_paediatrician_input_date or assessment.consultant_paediatrician_referral_made is None) Test Measure 2 - % of children and young people with epilepsy, with input by a ‘consultant paediatrician with expertise in epilepsies’ within 2 weeks of initial referral @@ -30,26 +26,182 @@ ) from epilepsy12.constants import KPI_SCORE - +REFERRAL_DATE = date(2023, 1, 1) +PASS_INPUT_DATE = REFERRAL_DATE + relativedelta(days=14) +FAIL_INPUT_DATE = REFERRAL_DATE + relativedelta(days=15) + + +@pytest.mark.parametrize( + "consultant_paediatrician_referral_made,consultant_paediatrician_referral_date, consultant_paediatrician_input_achieved, consultant_paediatrician_input_date,paediatric_neurologist_referral_made,paediatric_neurologist_referral_date,paediatric_neurologist_input_achieved,paediatric_neurologist_input_date,expected_score", + [ + ( + True, + REFERRAL_DATE, + True, + PASS_INPUT_DATE, + False, + None, + None, + None, + KPI_SCORE["PASS"], + ), + ( + True, + REFERRAL_DATE, + None, + PASS_INPUT_DATE, + False, + None, + None, + None, + KPI_SCORE["PASS"], + ), + ( + True, + REFERRAL_DATE, + True, + PASS_INPUT_DATE, + True, + REFERRAL_DATE, + True, + PASS_INPUT_DATE, + KPI_SCORE["PASS"], + ), + ( + True, + REFERRAL_DATE, + True, + PASS_INPUT_DATE, + True, + REFERRAL_DATE, + None, + PASS_INPUT_DATE, + KPI_SCORE["PASS"], + ), + ( + True, + REFERRAL_DATE, + True, + PASS_INPUT_DATE, + True, + REFERRAL_DATE, + True, + FAIL_INPUT_DATE, + KPI_SCORE["PASS"], + ), + ( + True, + REFERRAL_DATE, + None, + PASS_INPUT_DATE, + True, + REFERRAL_DATE, + True, + FAIL_INPUT_DATE, + KPI_SCORE["PASS"], + ), + ( + True, + REFERRAL_DATE, + True, + PASS_INPUT_DATE, + True, + REFERRAL_DATE, + None, + FAIL_INPUT_DATE, + KPI_SCORE["PASS"], + ), + ( + True, + REFERRAL_DATE, + None, + PASS_INPUT_DATE, + True, + REFERRAL_DATE, + None, + FAIL_INPUT_DATE, + KPI_SCORE["PASS"], + ), + ( + True, + REFERRAL_DATE, + True, + PASS_INPUT_DATE, + True, + REFERRAL_DATE, + True, + None, + KPI_SCORE["PASS"], + ), + ( + False, + None, + None, + None, + True, + REFERRAL_DATE, + True, + PASS_INPUT_DATE, + KPI_SCORE["PASS"], + ), + ( + False, + None, + None, + None, + True, + REFERRAL_DATE, + None, + PASS_INPUT_DATE, + KPI_SCORE["PASS"], + ), + ( + True, + REFERRAL_DATE, + None, + None, + True, + REFERRAL_DATE, + True, + PASS_INPUT_DATE, + KPI_SCORE["PASS"], + ), + ( + True, + REFERRAL_DATE, + None, + None, + True, + REFERRAL_DATE, + None, + PASS_INPUT_DATE, + KPI_SCORE["PASS"], + ), + ], +) @pytest.mark.django_db def test_measure_1_should_pass_seen_paediatrician( e12_case_factory, + consultant_paediatrician_referral_made, + consultant_paediatrician_referral_date, + consultant_paediatrician_input_achieved, + consultant_paediatrician_input_date, + paediatric_neurologist_referral_made, + paediatric_neurologist_referral_date, + paediatric_neurologist_input_achieved, + paediatric_neurologist_input_date, + expected_score, ): - """ - *PASS* - 1) consultant_paediatrician_referral_made = True - consultant_paediatrician_referral_date = registration date - consultant_paediatrician_input_date <= 14 days after referral - """ - - REFERRAL_DATE = date(2023, 1, 1) - INPUT_DATE = REFERRAL_DATE + relativedelta(days=14) - # creates a case with all audit values filled case = e12_case_factory( - registration__assessment__consultant_paediatrician_referral_made=True, - registration__assessment__consultant_paediatrician_referral_date=REFERRAL_DATE, - registration__assessment__consultant_paediatrician_input_date=INPUT_DATE, + registration__assessment__consultant_paediatrician_referral_made=consultant_paediatrician_referral_made, + registration__assessment__consultant_paediatrician_referral_date=consultant_paediatrician_referral_date, + registration__assessment__consultant_paediatrician_input_achieved=consultant_paediatrician_input_achieved, + registration__assessment__consultant_paediatrician_input_date=consultant_paediatrician_input_date, + registration__assessment__paediatric_neurologist_referral_made=paediatric_neurologist_referral_made, + registration__assessment__paediatric_neurologist_referral_date=paediatric_neurologist_referral_date, + registration__assessment__paediatric_neurologist_input_achieved=paediatric_neurologist_input_achieved, + registration__assessment__paediatric_neurologist_input_date=paediatric_neurologist_input_date, ) # get registration for the saved case model @@ -63,30 +215,160 @@ def test_measure_1_should_pass_seen_paediatrician( ).paediatrician_with_expertise_in_epilepsies assert ( - kpi_score == KPI_SCORE["PASS"] - ), f"Patient saw a Paediatrician IN {INPUT_DATE - REFERRAL_DATE} after referral, but did not pass measure" - - + kpi_score == expected_score + ), f"Patient saw a Paediatrician IN {PASS_INPUT_DATE - REFERRAL_DATE} after referral, but did not pass measure.\nScores\npaediatrician\n- referral_made: {consultant_paediatrician_referral_made}\n- referral date: {consultant_paediatrician_referral_date}\n- achieved: {consultant_paediatrician_input_achieved}\n- input_date: {consultant_paediatrician_input_date},\n neurologist\n- referral_made: {paediatric_neurologist_referral_made}\n- referral_date: {paediatric_neurologist_referral_date}\n- achieved: {paediatric_neurologist_input_achieved}\n- input_date: {paediatric_neurologist_input_date})\n" + + +@pytest.mark.parametrize( + "consultant_paediatrician_referral_made,consultant_paediatrician_referral_date, consultant_paediatrician_input_achieved, consultant_paediatrician_input_date,paediatric_neurologist_referral_made,paediatric_neurologist_referral_date,paediatric_neurologist_input_achieved,paediatric_neurologist_input_date,expected_score", + [ + ( + None, # consultant_paediatrician_referral_made + None, # consultant_paediatrician_referral_date + False, # consultant_paediatrician_input_achieved + None, # consultant_paediatrician_input_date + True, # paediatric_neurologist_referral_made + REFERRAL_DATE, # paediatric_neurologist_referral_date + True, # paediatric_neurologist_input_achieved + PASS_INPUT_DATE, # paediatric_neurologist_input_date + KPI_SCORE["PASS"], # expected_score + ), # Neurologist seen within 14 days, paediatrician not involved + ( + True, # consultant_paediatrician_referral_made + None, # consultant_paediatrician_referral_date + None, # consultant_paediatrician_input_achieved + None, # consultant_paediatrician_input_date + True, # paediatric_neurologist_referral_made + REFERRAL_DATE, # paediatric_neurologist_referral_date + True, # paediatric_neurologist_input_achieved + PASS_INPUT_DATE, # paediatric_neurologist_input_date + KPI_SCORE["PASS"], # expected_score + ), # Neurologist seen within 14 days, paediatrician involved but not referred + ( + True, # consultant_paediatrician_referral_made + REFERRAL_DATE, # consultant_paediatrician_referral_date + False, # consultant_paediatrician_input_achieved + None, # consultant_paediatrician_input_date + True, # paediatric_neurologist_referral_made + REFERRAL_DATE, # paediatric_neurologist_referral_date + True, # paediatric_neurologist_input_achieved + PASS_INPUT_DATE, # paediatric_neurologist_input_date + KPI_SCORE["PASS"], # expected_score + ), # Neurologist seen within 14 days, paediatrician involved but not referred + ( + True, # consultant_paediatrician_referral_made + REFERRAL_DATE, # consultant_paediatrician_referral_date + True, # consultant_paediatrician_input_achieved + PASS_INPUT_DATE, # consultant_paediatrician_input_date + True, # paediatric_neurologist_referral_made + REFERRAL_DATE, # paediatric_neurologist_referral_date + True, # paediatric_neurologist_input_achieved + PASS_INPUT_DATE, # paediatric_neurologist_input_date + KPI_SCORE["PASS"], # expected_score + ), # Neurologist seen within 14 days, paediatrician seen within 14 days - both seen within 14 days so pass + ( + True, # consultant_paediatrician_referral_made + REFERRAL_DATE, # consultant_paediatrician_referral_date + True, # consultant_paediatrician_input_achieved + FAIL_INPUT_DATE, # consultant_paediatrician_input_date + True, # paediatric_neurologist_referral_made + REFERRAL_DATE, # paediatric_neurologist_referral_date + True, # paediatric_neurologist_input_achieved + PASS_INPUT_DATE, # paediatric_neurologist_input_date + KPI_SCORE["PASS"], # expected_score + ), # Neurologist seen within 14 days, paediatrician seen after 14 days - only one has to be seen within 14 days + ( + False, # consultant_paediatrician_referral_made + REFERRAL_DATE, # consultant_paediatrician_referral_date + True, # consultant_paediatrician_input_achieved + PASS_INPUT_DATE, # consultant_paediatrician_input_date + True, # paediatric_neurologist_referral_made + REFERRAL_DATE, # paediatric_neurologist_referral_date + True, # paediatric_neurologist_input_achieved + PASS_INPUT_DATE, # paediatric_neurologist_input_date + KPI_SCORE["PASS"], # expected_score + ), # Neurologist seen within 14 days, paediatrician not declared referred but seen and referred within 14 days: both seen within 14 days so pass + ( + False, # consultant_paediatrician_referral_made + REFERRAL_DATE, # consultant_paediatrician_referral_date + True, # consultant_paediatrician_input_achieved + FAIL_INPUT_DATE, # consultant_paediatrician_input_date + True, # paediatric_neurologist_referral_made + REFERRAL_DATE, # paediatric_neurologist_referral_date + True, # paediatric_neurologist_input_achieved + PASS_INPUT_DATE, # paediatric_neurologist_input_date + KPI_SCORE["PASS"], # expected_score + ), # Neurologist seen within 14 days, paediatrician not declared referred but seen after 14 days of referral: only one has to be seen within 14 days + ( + False, # consultant_paediatrician_referral_made + None, # consultant_paediatrician_referral_date + True, # consultant_paediatrician_input_achieved + FAIL_INPUT_DATE, # consultant_paediatrician_input_date + True, # paediatric_neurologist_referral_made + REFERRAL_DATE, # paediatric_neurologist_referral_date + True, # paediatric_neurologist_input_achieved + PASS_INPUT_DATE, # paediatric_neurologist_input_date + KPI_SCORE["PASS"], # expected_score + ), # Neurologist seen within 14 days, paediatrician not declared referred, no referral date but seen after 14 days of referral + ( + False, # consultant_paediatrician_referral_made + REFERRAL_DATE, # consultant_paediatrician_referral_date + False, # consultant_paediatrician_input_achieved + None, # consultant_paediatrician_input_date + True, # paediatric_neurologist_referral_made + REFERRAL_DATE, # paediatric_neurologist_referral_date + True, # paediatric_neurologist_input_achieved + PASS_INPUT_DATE, # paediatric_neurologist_input_date + KPI_SCORE["PASS"], # expected_score + ), # Neurologist seen within 14 days, paediatrician not declared referred but referral date made but not seen + ( + None, # consultant_paediatrician_referral_made + REFERRAL_DATE, # consultant_paediatrician_referral_date + False, # consultant_paediatrician_input_achieved + None, # consultant_paediatrician_input_date + True, # paediatric_neurologist_referral_made + REFERRAL_DATE, # paediatric_neurologist_referral_date + True, # paediatric_neurologist_input_achieved + PASS_INPUT_DATE, # paediatric_neurologist_input_date + KPI_SCORE["PASS"], # expected_score + ), # Neurologist seen within 14 days, paediatrician referral none with referral date but not seen + ( + None, # consultant_paediatrician_referral_made + None, # consultant_paediatrician_referral_date + True, # consultant_paediatrician_input_achieved + PASS_INPUT_DATE, # consultant_paediatrician_input_date + True, # paediatric_neurologist_referral_made + REFERRAL_DATE, # paediatric_neurologist_referral_date + True, # paediatric_neurologist_input_achieved + PASS_INPUT_DATE, # paediatric_neurologist_input_date + KPI_SCORE["PASS"], # expected_score + ), # Neurologist seen within 14 days, paediatrician referral none with no input date but seen + ], +) @pytest.mark.django_db def test_measure_1_should_pass_seen_neurologist( e12_case_factory, + consultant_paediatrician_referral_made, + consultant_paediatrician_referral_date, + consultant_paediatrician_input_achieved, + consultant_paediatrician_input_date, + paediatric_neurologist_referral_made, + paediatric_neurologist_referral_date, + paediatric_neurologist_input_achieved, + paediatric_neurologist_input_date, + expected_score, ): - """ - *PASS* - 2) paediatric_neurologist_referral_made = True - paediatric_neurologist_referral_date = registration date - paediatric_neurologist_input_date <= 14 days after referral - - """ - - REFERRAL_DATE = date(2023, 1, 1) - INPUT_DATE = REFERRAL_DATE + relativedelta(days=14) # creates a case with all audit values filled case = e12_case_factory( - registration__assessment__paediatric_neurologist_referral_made=True, - registration__assessment__paediatric_neurologist_referral_date=REFERRAL_DATE, - registration__assessment__paediatric_neurologist_input_date=INPUT_DATE, + registration__assessment__consultant_paediatrician_referral_made=consultant_paediatrician_referral_made, + registration__assessment__consultant_paediatrician_referral_date=consultant_paediatrician_referral_date, + registration__assessment__consultant_paediatrician_input_achieved=consultant_paediatrician_input_achieved, + registration__assessment__consultant_paediatrician_input_date=consultant_paediatrician_input_date, + registration__assessment__paediatric_neurologist_referral_made=paediatric_neurologist_referral_made, + registration__assessment__paediatric_neurologist_referral_date=paediatric_neurologist_referral_date, + registration__assessment__paediatric_neurologist_input_achieved=paediatric_neurologist_input_achieved, + registration__assessment__paediatric_neurologist_input_date=paediatric_neurologist_input_date, ) # get registration for the saved case model @@ -100,36 +382,161 @@ def test_measure_1_should_pass_seen_neurologist( ).paediatrician_with_expertise_in_epilepsies assert ( - kpi_score == KPI_SCORE["PASS"] - ), f"Patient saw a Neurologist IN {INPUT_DATE - REFERRAL_DATE} after referral, but did not pass measure" - - + kpi_score == expected_score + ), f"Patient saw a Neurologist in {PASS_INPUT_DATE - REFERRAL_DATE} after referral, but did not pass measure\nScores\npaediatrician\n- referral_made: {consultant_paediatrician_referral_made}\n- referral date: {consultant_paediatrician_referral_date}\n- achieved: {consultant_paediatrician_input_achieved}\n- input_date: {consultant_paediatrician_input_date},\n neurologist\n- referral_made: {paediatric_neurologist_referral_made}\n- referral_date: {paediatric_neurologist_referral_date}\n- achieved: {paediatric_neurologist_input_achieved}\n- input_date: {paediatric_neurologist_input_date})\n" + + +@pytest.mark.parametrize( + "consultant_paediatrician_referral_made,consultant_paediatrician_referral_date, consultant_paediatrician_input_achieved, consultant_paediatrician_input_date,paediatric_neurologist_referral_made,paediatric_neurologist_referral_date,paediatric_neurologist_input_achieved,paediatric_neurologist_input_date,expected_score", + [ + (True, REFERRAL_DATE, False, None, False, None, None, None, KPI_SCORE["FAIL"]), + ( + True, + REFERRAL_DATE, + True, + FAIL_INPUT_DATE, + False, + None, + None, + None, + KPI_SCORE["FAIL"], + ), + ( + True, + REFERRAL_DATE, + None, + FAIL_INPUT_DATE, + False, + None, + None, + None, + KPI_SCORE["FAIL"], + ), + ( + True, + REFERRAL_DATE, + None, + FAIL_INPUT_DATE, + True, + REFERRAL_DATE, + None, + None, + KPI_SCORE["FAIL"], + ), + ( + False, + None, + None, + None, + True, + REFERRAL_DATE, + True, + FAIL_INPUT_DATE, + KPI_SCORE["FAIL"], + ), + ( + False, + None, + None, + None, + True, + REFERRAL_DATE, + None, + FAIL_INPUT_DATE, + KPI_SCORE["FAIL"], + ), + ( + True, + REFERRAL_DATE, + None, + None, + True, + REFERRAL_DATE, + False, + FAIL_INPUT_DATE, + KPI_SCORE["FAIL"], + ), + ( + False, # consultant_paediatrician_referral_made + None, # consultant_paediatrician_referral_date + None, # consultant_paediatrician_input_achieved + None, # consultant_paediatrician_input_date + True, # paediatric_neurologist_referral_made + REFERRAL_DATE, # paediatric_neurologist_referral_date + True, # paediatric_neurologist_input_achieved + None, # paediatric_neurologist_input_date + KPI_SCORE["FAIL"], # expected_score + ), # Paediatrician never referred, neurologist referred, input achieved but no date + ( + True, + REFERRAL_DATE, + True, + FAIL_INPUT_DATE, + True, + REFERRAL_DATE, + True, + FAIL_INPUT_DATE, + KPI_SCORE["FAIL"], + ), + ( + True, + REFERRAL_DATE, + None, + FAIL_INPUT_DATE, + True, + REFERRAL_DATE, + True, + FAIL_INPUT_DATE, + KPI_SCORE["FAIL"], + ), + ( + True, + REFERRAL_DATE, + True, + FAIL_INPUT_DATE, + True, + REFERRAL_DATE, + None, + FAIL_INPUT_DATE, + KPI_SCORE["FAIL"], + ), + ( + True, + REFERRAL_DATE, + None, + FAIL_INPUT_DATE, + True, + REFERRAL_DATE, + None, + FAIL_INPUT_DATE, + KPI_SCORE["FAIL"], + ), + ], +) @pytest.mark.django_db -def test_measure_1_should_fail_not_seen_14_days_after_referral( +def test_measure_1_should_fail_not_seen_paediatrician_or_neurologist_14_days_after_referral( e12_case_factory, + consultant_paediatrician_referral_made, + consultant_paediatrician_referral_date, + consultant_paediatrician_input_achieved, + consultant_paediatrician_input_date, + paediatric_neurologist_referral_made, + paediatric_neurologist_referral_date, + paediatric_neurologist_input_achieved, + paediatric_neurologist_input_date, + expected_score, ): - """ - *FAIL* - 1) consultant_paediatrician_referral_made = True - consultant_paediatrician_referral_date = registration date - consultant_paediatrician_input_date > 14 days after referral - paediatric_neurologist_referral_made = True - paediatric_neurologist_referral_date = registration date - paediatric_neurologist_input_date > 14 days after referral - - """ - - REFERRAL_DATE = date(2023, 1, 1) - INPUT_DATE = REFERRAL_DATE + relativedelta(days=15) # creates a case with all audit values filled case = e12_case_factory( - registration__assessment__consultant_paediatrician_referral_made=True, - registration__assessment__consultant_paediatrician_referral_date=REFERRAL_DATE, - registration__assessment__consultant_paediatrician_input_date=INPUT_DATE, - registration__assessment__paediatric_neurologist_referral_made=True, - registration__assessment__paediatric_neurologist_referral_date=REFERRAL_DATE, - registration__assessment__paediatric_neurologist_input_date=INPUT_DATE, + registration__assessment__consultant_paediatrician_referral_made=consultant_paediatrician_referral_made, + registration__assessment__consultant_paediatrician_referral_date=consultant_paediatrician_referral_date, + registration__assessment__consultant_paediatrician_input_achieved=consultant_paediatrician_input_achieved, + registration__assessment__consultant_paediatrician_input_date=consultant_paediatrician_input_date, + registration__assessment__paediatric_neurologist_referral_made=paediatric_neurologist_referral_made, + registration__assessment__paediatric_neurologist_referral_date=paediatric_neurologist_referral_date, + registration__assessment__paediatric_neurologist_input_achieved=paediatric_neurologist_input_achieved, + registration__assessment__paediatric_neurologist_input_date=paediatric_neurologist_input_date, ) # get registration for the saved case model @@ -143,19 +550,14 @@ def test_measure_1_should_fail_not_seen_14_days_after_referral( ).paediatrician_with_expertise_in_epilepsies assert ( - kpi_score == KPI_SCORE["FAIL"] - ), f"Patient did not see a Paediatrician/Neurologist within 14 days of referral (seen after {INPUT_DATE - REFERRAL_DATE}), but did not fail measure" + kpi_score == expected_score + ), f"Patient did not see a Paediatrician/Neurologist within 14 days of referral (seen after {FAIL_INPUT_DATE - REFERRAL_DATE}), but did not fail measure\nScores\npaediatrician\n- referral_made: {consultant_paediatrician_referral_made}\n- referral date: {consultant_paediatrician_referral_date}\n- achieved: {consultant_paediatrician_input_achieved}\n- input_date: {consultant_paediatrician_input_date},\n neurologist\n- referral_made: {paediatric_neurologist_referral_made}\n- referral_date: {paediatric_neurologist_referral_date}\n- achieved: {paediatric_neurologist_input_achieved}\n- input_date: {paediatric_neurologist_input_date})\n" @pytest.mark.django_db def test_measure_1_should_fail_no_doctor_involved( e12_case_factory, ): - """ - *FAIL* - 1) consultant_paediatrician_referral_made = False - paediatric_neurologist_referral_made = False - """ # creates a case with all audit values filled case = e12_case_factory( @@ -175,4 +577,417 @@ def test_measure_1_should_fail_no_doctor_involved( assert ( kpi_score == KPI_SCORE["FAIL"] - ), f"Patient did not see a Paediatrician/Neurologist, but did not fail measure" + ), f"Patient did not see a Paediatrician/Neurologist, but did not fail measure - no doctor involved in care" + + +@pytest.mark.parametrize( + "consultant_paediatrician_referral_made,consultant_paediatrician_referral_date, consultant_paediatrician_input_achieved, consultant_paediatrician_input_date,paediatric_neurologist_referral_made,paediatric_neurologist_referral_date,paediatric_neurologist_input_achieved,paediatric_neurologist_input_date,expected_score", + [ + ( + True, # consultant_paediatrician_referral_made + REFERRAL_DATE, # consultant_paediatrician_referral_date + None, # consultant_paediatrician_input_achieved + None, # consultant_paediatrician_input_date + None, # paediatric_neurologist_referral_made + None, # paediatric_neurologist_referral_date + None, # paediatric_neurologist_input_achieved + None, # paediatric_neurologist_input_date + KPI_SCORE["NOT_SCORED"], # expected_score + ), # Paediatrician referred but no other dates + ( + True, # consultant_paediatrician_referral_made + REFERRAL_DATE, # consultant_paediatrician_referral_date + True, # consultant_paediatrician_input_achieved + None, # consultant_paediatrician_input_date + True, # paediatric_neurologist_referral_made + None, # paediatric_neurologist_referral_date + None, # paediatric_neurologist_input_achieved + None, # paediatric_neurologist_input_date + KPI_SCORE["NOT_SCORED"], # expected_score + ), # Paediatrician referred, input achieved but no other dates + ], +) +@pytest.mark.django_db +def test_measure_1_not_scored( + e12_case_factory, + consultant_paediatrician_referral_made, + consultant_paediatrician_referral_date, + consultant_paediatrician_input_achieved, + consultant_paediatrician_input_date, + paediatric_neurologist_referral_made, + paediatric_neurologist_referral_date, + paediatric_neurologist_input_achieved, + paediatric_neurologist_input_date, + expected_score, +): + # creates a case with all audit values filled + case = e12_case_factory( + registration__assessment__consultant_paediatrician_referral_made=consultant_paediatrician_referral_made, + registration__assessment__consultant_paediatrician_referral_date=consultant_paediatrician_referral_date, + registration__assessment__consultant_paediatrician_input_achieved=consultant_paediatrician_input_achieved, + registration__assessment__consultant_paediatrician_input_date=consultant_paediatrician_input_date, + registration__assessment__paediatric_neurologist_referral_made=paediatric_neurologist_referral_made, + registration__assessment__paediatric_neurologist_referral_date=paediatric_neurologist_referral_date, + registration__assessment__paediatric_neurologist_input_achieved=paediatric_neurologist_input_achieved, + registration__assessment__paediatric_neurologist_input_date=paediatric_neurologist_input_date, + ) + + # get registration for the saved case model + registration = Registration.objects.get(case=case) + + calculate_kpis(registration_instance=registration) + + # ensure we get the updated database object, not the Python object + kpi_score = KPI.objects.get( + pk=registration.kpi.pk + ).paediatrician_with_expertise_in_epilepsies + + assert ( + kpi_score == expected_score + ), f"Patient did not have enough criteria to pass or fail measure, but did not return NOT_SCORED\nScores\npaediatrician\n- referral_made: {consultant_paediatrician_referral_made}\n- referral date: {consultant_paediatrician_referral_date}\n- achieved: {consultant_paediatrician_input_achieved}\n- input_date: {consultant_paediatrician_input_date},\n neurologist\n- referral_made: {paediatric_neurologist_referral_made}\n- referral_date: {paediatric_neurologist_referral_date}\n- achieved: {paediatric_neurologist_input_achieved}\n- input_date: {paediatric_neurologist_input_date})\n" + + +""" +PASSES +- [ ] Paediatrician seen withing 14 days, no neurology input or referral +Paediatrician +- consultant_paediatrician_referral_made True +- consultant_paediatrician_referral_date REFERRAL_DATE +- consultant_paediatrician_input_achieved True +- consultant_paediatrician_input_date PASS_INPUT_DATE +Neurologist +- paediatric_neurologist_referral_made False +- paediatric_neurologist_referral_date None +- paediatric_neurologist_input_achieved None +- paediatric_neurologist_input_date None +# (True, REFERRAL_DATE, True, PASS_INPUT_DATE, False, None, None, None, KPI_SCORE["PASS"]) + +- [ ] Paediatrician seen withing 14 days (input achieved None as before introduced), no neurology input or referral +Paediatrician True +- consultant_paediatrician_referral_made REFERRAL_DATE +- consultant_paediatrician_input_achieved None +- consultant_paediatrician_input_date PASS_INPUT_DATE +Neurologist +- paediatric_neurologist_referral_made False +- paediatric_neurologist_referral_date None +- paediatric_neurologist_input_achieved None +- paediatric_neurologist_input_date None +# (True, REFERRAL_DATE, None, PASS_INPUT_DATE, False, None, None, None, KPI_SCORE["PASS"]) + +- [ ] Paediatrician seen within 14 days, neurologist referred and seen in 14 days +Paediatrician +- consultant_paediatrician_referral_made True +- paediatric_neurologist_referral_date REFERRAL_DATE +- consultant_paediatrician_input_achieved True +- consultant_paediatrician_input_date PASS_INPUT_DATE +Neurologist +- paediatric_neurologist_referral_made True +- paediatric_neurologist_referral_date REFERRAL_DATE +- paediatric_neurologist_input_achieved True +- paediatric_neurologist_input_date PASS_INPUT_DATE +# (True, REFERRAL_DATE, True, PASS_INPUT_DATE, True, REFERRAL_DATE, True, PASS_INPUT_DATE, KPI_SCORE["PASS"])) + +- [ ] Paediatrician seen within 14 days, neurologist referred and seen in 14 days (input achieved None as before introduced) +Paediatrician +- consultant_paediatrician_referral_made True +- paediatric_neurologist_referral_date REFERRAL_DATE +- consultant_paediatrician_input_achieved True +- consultant_paediatrician_input_date PASS_INPUT_DATE +Neurologist +- paediatric_neurologist_referral_made True +- paediatric_neurologist_referral_date REFERRAL_DATE +- paediatric_neurologist_input_achieved None +- paediatric_neurologist_input_date PASS_INPUT_DATE +# (True, REFERRAL_DATE, True, PASS_INPUT_DATE, True, REFERRAL_DATE, None, PASS_INPUT_DATE, KPI_SCORE["PASS"])) + +- [ ] Paediatrician seen within 14 days, neurologist referred but not seen in 14 days +Paediatrician +- consultant_paediatrician_referral_made True +- paediatric_neurologist_referral_date REFERRAL_DATE +- consultant_paediatrician_input_achieved True +- consultant_paediatrician_input_date PASS_INPUT_DATE +Neurologist +- paediatric_neurologist_referral_made True +- paediatric_neurologist_referral_date REFERRAL_DATE +- paediatric_neurologist_input_achieved True +- paediatric_neurologist_input_date FAIL_INPUT_DATE +# (True, REFERRAL_DATE, True, PASS_INPUT_DATE, True, REFERRAL_DATE, True, FAIL_INPUT_DATE, KPI_SCORE["PASS"])) + +- [ ] Paediatrician seen within 14 days (input achieved None as before introduced), neurologist referred but not seen in 14 days +Paediatrician +- consultant_paediatrician_referral_made True +- paediatric_neurologist_referral_date REFERRAL_DATE +- consultant_paediatrician_input_achieved None +- consultant_paediatrician_input_date PASS_INPUT_DATE +Neurologist +- paediatric_neurologist_referral_made True +- paediatric_neurologist_referral_date REFERRAL_DATE +- paediatric_neurologist_input_achieved True +- paediatric_neurologist_input_date FAIL_INPUT_DATE +# (True,REFERRAL_DATE,None,PASS_INPUT_DATE,True,REFERRAL_DATE,True,FAIL_INPUT_DATE, KPI_SCORE["PASS"])) + +- [ ] Paediatrician seen within 14 days, neurologist referred but not seen in 14 days (input achieved None as before introduced) +Paediatrician +- consultant_paediatrician_referral_made True +- paediatric_neurologist_referral_date REFERRAL_DATE +- consultant_paediatrician_input_achieved True +- consultant_paediatrician_input_date PASS_INPUT_DATE +Neurologist +- paediatric_neurologist_referral_made True +- paediatric_neurologist_referral_date REFERRAL_DATE +- paediatric_neurologist_input_achieved None +- paediatric_neurologist_input_date FAIL_INPUT_DATE +# (True, REFERRAL_DATE, True, PASS_INPUT_DATE, True, REFERRAL_DATE, None, FAIL_INPUT_DATE, KPI_SCORE["PASS"])) + +- [ ] Paediatrician seen within 14 days (input achieved None as before introduced), neurologist referred but not seen in 14 days (input achieved None as before introduced) +Paediatrician +- consultant_paediatrician_referral_made True +- paediatric_neurologist_referral_date REFERRAL_DATE +- consultant_paediatrician_input_achieved None +- consultant_paediatrician_input_date PASS_INPUT_DATE +Neurologist +- paediatric_neurologist_referral_made True +- paediatric_neurologist_referral_date REFERRAL_DATE +- paediatric_neurologist_input_achieved None +- paediatric_neurologist_input_date FAIL_INPUT_DATE +# (True, REFERRAL_DATE, None, PASS_INPUT_DATE, True, REFERRAL_DATE, None, FAIL_INPUT_DATE, KPI_SCORE["PASS"])) + +- [ ] Paediatrician seen within 14 days, neurologist incomplete +Paediatrician +- consultant_paediatrician_referral_made True +- paediatric_neurologist_referral_date REFERRAL_DATE +- consultant_paediatrician_input_achieved True +- consultant_paediatrician_input_date PASS_INPUT_DATE +Neurologist +- paediatric_neurologist_referral_made True +- paediatric_neurologist_referral_date REFERRAL_DATE +- paediatric_neurologist_input_achieved True +- paediatric_neurologist_input_date None +# (True, REFERRAL_DATE, True, PASS_INPUT_DATE, True, REFERRAL_DATE, True, None, KPI_SCORE["PASS"])) + +- [ ] Paediatrician not seen, neurologist seen within 14 days +Paediatrician +- consultant_paediatrician_referral_made False +- paediatric_neurologist_referral_date None +- consultant_paediatrician_input_achieved None +- consultant_paediatrician_input_date None +Neurologist +- paediatric_neurologist_referral_made True +- paediatric_neurologist_referral_date REFERRAL_DATE +- paediatric_neurologist_input_achieved True +- paediatric_neurologist_input_date PASS_INPUT_DATE +# (False,None,None,None,True,REFERRAL_DATE,True,PASS_INPUT_DATE, KPI_SCORE["PASS"]) + +- [ ] Paediatrician not seen, neurologist seen within 14 days (input achieved None as before introduced) +Paediatrician +- consultant_paediatrician_referral_made False +- paediatric_neurologist_referral_date None +- consultant_paediatrician_input_achieved None +- consultant_paediatrician_input_date None +Neurologist +- paediatric_neurologist_referral_made True +- paediatric_neurologist_referral_date REFERRAL_DATE +- paediatric_neurologist_input_achieved None +- paediatric_neurologist_input_date PASS_INPUT_DATE +# (False,None,None,None,True,REFERRAL_DATE,None,PASS_INPUT_DATE, KPI_SCORE["PASS"]) + +- [ ] Paediatrician incomplete, neurologist seen within 14 days +Paediatrician +- consultant_paediatrician_referral_made True +- paediatric_neurologist_referral_date REFERRAL_DATE +- consultant_paediatrician_input_achieved None +- consultant_paediatrician_input_date None +Neurologist +- paediatric_neurologist_referral_made True +- paediatric_neurologist_referral_date REFERRAL_DATE +- paediatric_neurologist_input_achieved True +- paediatric_neurologist_input_date PASS_INPUT_DATE +# (True,REFERRAL_DATE,None,None,True,REFERRAL_DATE,True,PASS_INPUT_DATE, KPI_SCORE["PASS"])) + +- [ ] Paediatrician incomplete, neurologist seen within 14 days (input achieved None as before introduced) +Paediatrician +- consultant_paediatrician_referral_made True +- paediatric_neurologist_referral_date REFERRAL_DATE +- consultant_paediatrician_input_achieved None +- consultant_paediatrician_input_date None +Neurologist +- paediatric_neurologist_referral_made True +- paediatric_neurologist_referral_date REFERRAL_DATE +- paediatric_neurologist_input_achieved None +- paediatric_neurologist_input_date PASS_INPUT_DATE +# (True, REFERRAL_DATE, None, None, True, REFERRAL_DATE, None, PASS_INPUT_DATE, KPI_SCORE["PASS"])) + +(True, REFERRAL_DATE, True, PASS_INPUT_DATE, False, None, None, None, KPI_SCORE["PASS"]), +(True, REFERRAL_DATE, None, PASS_INPUT_DATE, False, None, None, None, KPI_SCORE["PASS"]), +(True, REFERRAL_DATE, True, PASS_INPUT_DATE, True, REFERRAL_DATE, True, PASS_INPUT_DATE, KPI_SCORE["PASS"])), +(True, REFERRAL_DATE, True, PASS_INPUT_DATE, True, REFERRAL_DATE, None, PASS_INPUT_DATE, KPI_SCORE["PASS"])), +(True, REFERRAL_DATE, True, PASS_INPUT_DATE, True, REFERRAL_DATE, True, FAIL_INPUT_DATE, KPI_SCORE["PASS"])), +(True,REFERRAL_DATE,None,PASS_INPUT_DATE,True,REFERRAL_DATE,True,FAIL_INPUT_DATE, KPI_SCORE["PASS"])), +(True, REFERRAL_DATE, True, PASS_INPUT_DATE, True, REFERRAL_DATE, None, FAIL_INPUT_DATE, KPI_SCORE["PASS"])), +(True, REFERRAL_DATE, None, PASS_INPUT_DATE, True, REFERRAL_DATE, None, FAIL_INPUT_DATE, KPI_SCORE["PASS"])), +(True, REFERRAL_DATE, True, PASS_INPUT_DATE, True, REFERRAL_DATE, True, None, KPI_SCORE["PASS"])), +(False,None,None,None,True,REFERRAL_DATE,True,PASS_INPUT_DATE, KPI_SCORE["PASS"]), +(False,None,None,None,True,REFERRAL_DATE,None,PASS_INPUT_DATE, KPI_SCORE["PASS"]), +(True,REFERRAL_DATE,None,None,True,REFERRAL_DATE,True,PASS_INPUT_DATE, KPI_SCORE["PASS"])), +(True, REFERRAL_DATE, None, None, True, REFERRAL_DATE, None, PASS_INPUT_DATE, KPI_SCORE["PASS"])), +""" + + +""" +FAILS + +- [ ] Paediatrician not referred, no neurology input or referral +Paediatrician +- consultant_paediatrician_referral_made False +- consultant_paediatrician_referral_date None +- consultant_paediatrician_input_achieved None +- consultant_paediatrician_input_date None +Neurologist +- paediatric_neurologist_referral_made False +- paediatric_neurologist_referral_date None +- paediatric_neurologist_input_achieved None +- paediatric_neurologist_input_date None +# (True, REFERRAL_DATE, False, None, False, None, None, None, KPI_SCORE["FAIL"]) + +- [ ] Paediatrician not seen within 14 days, no neurology input or referral +Paediatrician +- consultant_paediatrician_referral_made True +- consultant_paediatrician_referral_date REFERRAL_DATE +- consultant_paediatrician_input_achieved True +- consultant_paediatrician_input_date FAIL_INPUT_DATE +Neurologist +- paediatric_neurologist_referral_made False +- paediatric_neurologist_referral_date None +- paediatric_neurologist_input_achieved None +- paediatric_neurologist_input_date None +# (True,REFERRAL_DATE,True,FAIL_INPUT_DATE,False,None,None,None) + +- [ ] Paediatrician not seen within 14 days (Input achieved none as before introduced), no neurology input or referral +Paediatrician +- consultant_paediatrician_referral_made True +- consultant_paediatrician_referral_date REFERRAL_DATE +- consultant_paediatrician_input_achieved None +- consultant_paediatrician_input_date FAIL_INPUT_DATE +Neurologist +- paediatric_neurologist_referral_made False +- paediatric_neurologist_referral_date None +- paediatric_neurologist_input_achieved None +- paediatric_neurologist_input_date None +# (True,REFERRAL_DATE,None,FAIL_INPUT_DATE,False,None,None,None) + +- [ ] Paediatrician not seen within 14 days, neurology incomplete +Paediatrician +- consultant_paediatrician_referral_made True +- consultant_paediatrician_referral_date REFERRAL_DATE +- consultant_paediatrician_input_achieved None +- consultant_paediatrician_input_date FAIL_INPUT_DATE +Neurologist +- paediatric_neurologist_referral_made True +- paediatric_neurologist_referral_date REFERRAL_DATE +- paediatric_neurologist_input_achieved None +- paediatric_neurologist_input_date None +# (True,REFERRAL_DATE,None,FAIL_INPUT_DATE,rue,REFERRAL_DATE,None,None) + +- [ ] Paediatrician not referred, neurology seen but no input within 14 days +Paediatrician +- consultant_paediatrician_referral_made False +- consultant_paediatrician_referral_date None +- consultant_paediatrician_input_achieved None +- consultant_paediatrician_input_date None +Neurologist +- paediatric_neurologist_referral_made True +- paediatric_neurologist_referral_date REFERRAL_DATE +- paediatric_neurologist_input_achieved True +- paediatric_neurologist_input_date FAIL_INPUT_DATE +# (False,None,None,None,True, REFERRAL_DATE,True,FAIL_INPUT_DATE) + +- [ ] Paediatrician not referred, neurology seen but no input within 14 days (input achieved None as before introduced) +Paediatrician +- consultant_paediatrician_referral_made False +- consultant_paediatrician_referral_date None +- consultant_paediatrician_input_achieved None +- consultant_paediatrician_input_date None +Neurologist +- paediatric_neurologist_referral_made True +- paediatric_neurologist_referral_date REFERRAL_DATE +- paediatric_neurologist_input_achieved None +- paediatric_neurologist_input_date FAIL_INPUT_DATE +# (False,None,None,None,True, REFERRAL_DATE,None,FAIL_INPUT_DATE) + +- [ ] Paediatrician incomplete, neurology seen but no input within 14 days +Paediatrician +- consultant_paediatrician_referral_made True +- consultant_paediatrician_referral_date REFERRAL_DATE +- consultant_paediatrician_input_achieved None +- consultant_paediatrician_input_date None +Neurologist +- paediatric_neurologist_referral_made True +- paediatric_neurologist_referral_date REFERRAL_DATE +- paediatric_neurologist_input_achieved False +- paediatric_neurologist_input_date FAIL_INPUT_DATE +# (True,REFERRAL_DATE,None,None,True,REFERRAL_DATE,False,FAIL_INPUT_DATE) + +- [ ] Paediatrician complete and fail, neurology seen but no input within 14 days +Paediatrician +- consultant_paediatrician_referral_made True +- consultant_paediatrician_referral_date REFERRAL_DATE +- consultant_paediatrician_input_achieved True +- consultant_paediatrician_input_date FAIL_INPUT_DATE +Neurologist +- paediatric_neurologist_referral_made True +- paediatric_neurologist_referral_date REFERRAL_DATE +- paediatric_neurologist_input_achieved True +- paediatric_neurologist_input_date FAIL_INPUT_DATE +# (True,REFERRAL_DATE,True,FAIL_INPUT_DATE,True,REFERRAL_DATE,True,FAIL_INPUT_DATE, KPI_SCORE["FAIL"]), + +- [ ] Paediatrician complete and fail (None for achieved), neurology seen but no input within 14 days +Paediatrician +- consultant_paediatrician_referral_made True +- consultant_paediatrician_referral_date REFERRAL_DATE +- consultant_paediatrician_input_achieved None +- consultant_paediatrician_input_date FAIL_INPUT_DATE +Neurologist +- paediatric_neurologist_referral_made True +- paediatric_neurologist_referral_date REFERRAL_DATE +- paediatric_neurologist_input_achieved True +- paediatric_neurologist_input_date FAIL_INPUT_DATE +# (True,REFERRAL_DATE,None,FAIL_INPUT_DATE,True,REFERRAL_DATE,True,FAIL_INPUT_DATE, KPI_SCORE["FAIL"]), + +- [ ] Paediatrician complete and fail (None for achieved), neurology seen but no input within 14 days (None) +Paediatrician +- consultant_paediatrician_referral_made True +- consultant_paediatrician_referral_date REFERRAL_DATE +- consultant_paediatrician_input_achieved True +- consultant_paediatrician_input_date FAIL_INPUT_DATE +Neurologist +- paediatric_neurologist_referral_made True +- paediatric_neurologist_referral_date REFERRAL_DATE +- paediatric_neurologist_input_achieved None +- paediatric_neurologist_input_date FAIL_INPUT_DATE +# (True,REFERRAL_DATE,None,FAIL_INPUT_DATE,True,REFERRAL_DATE,True,FAIL_INPUT_DATE, KPI_SCORE["FAIL"]), + +- [ ] Paediatrician complete and fail (None for achieved), neurology seen but no input within 14 days (None) +Paediatrician +- consultant_paediatrician_referral_made True +- consultant_paediatrician_referral_date REFERRAL_DATE +- consultant_paediatrician_input_achieved None +- consultant_paediatrician_input_date FAIL_INPUT_DATE +Neurologist +- paediatric_neurologist_referral_made True +- paediatric_neurologist_referral_date REFERRAL_DATE +- paediatric_neurologist_input_achieved None +- paediatric_neurologist_input_date FAIL_INPUT_DATE +# (True,REFERRAL_DATE,None,FAIL_INPUT_DATE,True,REFERRAL_DATE,None,FAIL_INPUT_DATE, KPI_SCORE["FAIL"]), + +(True, REFERRAL_DATE, False, None, False, None, None, None, KPI_SCORE["FAIL"]), +(True,REFERRAL_DATE,True,FAIL_INPUT_DATE,False,None,None,None,KPI_SCORE["FAIL"]), +(True,REFERRAL_DATE,None,FAIL_INPUT_DATE,False,None,None,None,KPI_SCORE["FAIL"]), +(True,REFERRAL_DATE,None,FAIL_INPUT_DATE,rue,REFERRAL_DATE,None,None,KPI_SCORE["FAIL"]), +(False,None,None,None,True, REFERRAL_DATE,True,FAIL_INPUT_DATE,KPI_SCORE["FAIL"]), +(False,None,None,None,True, REFERRAL_DATE,None,FAIL_INPUT_DATE,KPI_SCORE["FAIL"]), +(True,REFERRAL_DATE,None,None,True,REFERRAL_DATE,FALSE,FAIL_INPUT_DATE,KPI_SCORE["FAIL"]), +(True,REFERRAL_DATE,True,FAIL_INPUT_DATE,True,REFERRAL_DATE,True,FAIL_INPUT_DATE, KPI_SCORE["FAIL"]), +(True,REFERRAL_DATE,None,FAIL_INPUT_DATE,True,REFERRAL_DATE,True,FAIL_INPUT_DATE, KPI_SCORE["FAIL"]), +(True,REFERRAL_DATE,None,FAIL_INPUT_DATE,True,REFERRAL_DATE,True,FAIL_INPUT_DATE, KPI_SCORE["FAIL"]), +(True,REFERRAL_DATE,None,FAIL_INPUT_DATE,True,REFERRAL_DATE,None,FAIL_INPUT_DATE, KPI_SCORE["FAIL"]), +""" diff --git a/epilepsy12/views/case_views.py b/epilepsy12/views/case_views.py index cf386a9c..3f4b3d64 100644 --- a/epilepsy12/views/case_views.py +++ b/epilepsy12/views/case_views.py @@ -665,6 +665,9 @@ def update_case(request, organisation_id, case_id): case.registration.kpi.delete() case.registration.audit_progress.delete() # deletes related registration, KPI and Registration if they exist + case.updated_at = timezone.now() + case.updated_by = request.user + case.save() # save the updated case before deleting it to ensure the updated_at and updated_by fields are updated case.delete() url = reverse("cases", kwargs={"organisation_id": organisation_id}) return HttpResponseClientRedirect(redirect_to=url, status=200)