cassionData Analysis

Back to the lessonLesson 3 of 8The pathway

The 212 cases that are not a failure

The same deck as the downloads, rendered as a page. Start the slideshow to present it full screen — arrow keys or a click advance one slide, Escape leaves.

Slides · PDFSlides · PowerPoint

  1. Slide 1 / 19

    What this lesson covers

    • The pathway has four gates
    • Consent is not a performance measure
    • Report all three numbers
    • Where consent is not the gate
    • The contradictions to resolve first
    • What comes next
    Speaker notes
    88.5% of these cases consented to a referral. The 212 that did not are outside the performance denominator, because a person declining a referral is exercising a right rather than revealing a service gap — and counting them as failures does two wrong things at once.
  2. Slide 2 / 19

    The pathway has four gates — In Python

    import pandas as pd
    
    referrals = pd.read_csv("protection-referrals-2024.v1.csv")
    
    gates = {
        "cases recorded": len(referrals),
        "consented to referral": referrals["consent_to_refer"].sum(),
        "referral made": (referrals["consent_to_refer"] &
                          referrals["referral_made"]).sum(),
        "referral accepted": (referrals["referral_made"] &
                              referrals["referral_accepted"]).sum(),
        "reached a service": (referrals["referral_accepted"] &
                              referrals["days_to_first_service"].notna()).sum(),
    }
    for name, count in gates.items():
        print(f"{name:24} {count:>5}")
  3. Slide 3 / 19

    The pathway has four gates — In R

    library(dplyr)
    
    referrals |> summarise(
      cases = n(),
      consented = sum(consent_to_refer),
      made = sum(consent_to_refer & referral_made),
      accepted = sum(referral_made & referral_accepted),
      reached = sum(referral_accepted & !is.na(days_to_first_service))
    )
  4. Slide 4 / 19

    The pathway has four gates

    GateCasesShare of the previous gate
    Cases recorded1,850—
    Consented to referral1,63888.5%
    Referral made1,14269.7%
    Referral accepted75766.3%
    Reached a service71794.7%
    Speaker notes
    This is the cascade from module 4's first course, in a different sector — chained denominators, each gate measured against the one before it. The arithmetic is the same. The first gate is not.
  5. Slide 5 / 19

    Consent is not a performance measure

    • As failures — End-to-end completion becomes 717 / 1,850 = 38.8%
    • As exclusions — Completion becomes 717 / 1,638 = 43.8% on cases that consented
    • As a finding in their own right — 11.5% declined, and why is a service design question worth asking separately
    Speaker notes
    The 212 cases that did not consent could be counted three ways, and only one is defensible. As failures. End-to-end completion becomes 717 / 1,850 = 38.8%. This treats a person's decision as a programme shortfall. As exclusions. Completion becomes 717 / 1,638 = 43.8% on cases that consented. This is the performance figure. As a finding in their own right. 11.5% declined, and why is a service design question worth asking separately.
  6. Slide 6 / 19

    Consent is not a performance measure — In Python

    consenting = referrals["consent_to_refer"]
    reached = referrals["referral_accepted"] & referrals["days_to_first_service"].notna()
    
    print(f"on all cases:        {reached.sum() / len(referrals):.1%}")
    print(f"on consenting cases: {reached.sum() / consenting.sum():.1%}")
    print(f"declined:            {(~consenting).sum()} ({(~consenting).mean():.1%})")
  7. Slide 7 / 19

    Consent is not a performance measure — In R

    referrals |> summarise(
      all_cases = mean(referral_accepted & !is.na(days_to_first_service)),
      consenting = sum(referral_accepted & !is.na(days_to_first_service)) / sum(consent_to_refer)
    )
  8. Slide 8 / 19

    Consent is not a performance measure

    • Counting a non-consenting case as a pathway failure does two wrong things at once — It misstates performance by five…
    • Both matter and the second matters more — An indicator that treats declining as failure creates pressure on caseworkers…
    Speaker notes
    Counting a non-consenting case as a pathway failure does two wrong things at once. It misstates performance by five points, and it records a person's autonomous decision as a defect in the system that offered them a choice. Both matter and the second matters more. An indicator that treats declining as failure creates pressure on caseworkers to secure consent, which is the opposite of what informed consent means.
  9. Slide 9 / 19

    Report all three numbers — Example

    Referral pathway, 1,850 cases
    
      Consented to referral            88.5%   1,638
      Declined                         11.5%     212     reported separately
      Reached a service, of consenting 43.8%     717
      Reached a service, of all cases  38.8%             for reference only
  10. Slide 10 / 19

    Report all three numbers

    • Publish the consent rate as its own line — A falling consent rate is a signal about trust in the service, and it is…
    Speaker notes
    Publish the consent rate as its own line. A falling consent rate is a signal about trust in the service, and it is invisible if consent is only ever used as a filter.
  11. Slide 11 / 19

    Where consent is not the gate

    • Child protection cases involving a young child — operate under a best-interests determination rather than the child's…
    • Life-threatening emergencies — proceed to a life-saving referral without waiting for consent to a data transfer
    Speaker notes
    Two situations where this reasoning does not apply, both worth stating so the rule is not over-applied. Child protection cases involving a young child operate under a best-interests determination rather than the child's consent, and the consent field records the caregiver's decision. The denominator logic is the same and the ethical basis is different. Life-threatening emergencies proceed to a life-saving referral without waiting for consent to a data transfer. Those cases appear in the pathway and the consent column does not govern them.
  12. Slide 12 / 19

    Where consent is not the gate — In Python

    by_category = referrals.groupby("case_category")["consent_to_refer"].agg(
        ["mean", "size"]
    )
    print((by_category * [100, 1]).round(1))
  13. Slide 13 / 19

    Where consent is not the gate — In R

    referrals |> summarise(consent = mean(consent_to_refer), n = n(),
                           .by = case_category)
  14. Slide 14 / 19

    Where consent is not the gate

    • Check whether the consent rate differs by category before applying one rule to all of them — Where it does, the…
    Speaker notes
    Check whether the consent rate differs by category before applying one rule to all of them. Where it does, the denominator decision may need to differ too, and the report has to say which cases were treated which way.
  15. Slide 15 / 19

    The contradictions to resolve first — In Python

    impossible = (referrals["days_to_first_service"].notna() &
                  ~referrals["referral_accepted"])
    no_referral = impossible & ~referrals["referral_made"]
    no_consent = impossible & ~referrals["consent_to_refer"]
    
    print(f"time to service but referral not accepted: {impossible.sum()}")
    print(f"  of which no referral was made at all:    {no_referral.sum()}")
    print(f"  of which there was no consent:           {no_consent.sum()}")
  16. Slide 16 / 19

    The contradictions to resolve first — In R

    referrals |> filter(!is.na(days_to_first_service), !referral_accepted) |>
      count(referral_made, consent_to_refer)
  17. Slide 17 / 19

    The contradictions to resolve first

    • Eleven cases record a time to first service on a referral that was never accepted — Six of them show no referral made…
    Speaker notes
    Eleven cases record a time to first service on a referral that was never accepted. Six of them show no referral made at all, and one had no consent. These are logical contradictions and they have to be resolved before any completion rate is trusted, because each one is simultaneously a numerator and not a denominator. The resolution is a judgement and it must be written down. Trusting the service date implies the pathway fields are unreliable; trusting the pathway fields implies the service date is a keying error. Say which you trusted and how many cases it moved.
  18. Slide 18 / 19

    What comes next

    • The pathway loses cases at every gate.
    Speaker notes
    The pathway loses cases at every gate. The next lesson finds the gate where the largest share is lost, and the group of people for whom every gate is worse.
  19. Slide 19 / 19

    Where this goes next

    Read the full lesson, with runnable code Back to the lesson