Skip to content

Commit

Permalink
Merge pull request #1159 from rcpch/eatyourpeas/issue1154
Browse files Browse the repository at this point in the history
kpi-1
  • Loading branch information
eatyourpeas authored Jan 11, 2025
2 parents 0f92703 + 4ed2a5c commit 7951f59
Show file tree
Hide file tree
Showing 3 changed files with 936 additions and 91 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,47 +22,74 @@ 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
).days <= 14
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
).days <= 14
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"]
Loading

0 comments on commit 7951f59

Please sign in to comment.