Leçon 3 sur 8
Unité · Le circuit
Les 212 cas qui ne sont pas un échec
88,5 % de ces cas ont consenti à un référencement. Les 212 qui ne l'ont pas fait sont hors du dénominateur de performance, car une personne qui refuse un référencement exerce un droit plutôt que de révéler une lacune de service — et les compter comme des échecs fait deux erreurs à la fois.
Le circuit compte quatre portes
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}")
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))
)
| Porte | Cas | Part de la porte précédente |
|---|---|---|
| Cas enregistrés | 1 850 | — |
| Consentement au référencement | 1 638 | 88,5 % |
| Référencement effectué | 1 142 | 69,7 % |
| Référencement accepté | 757 | 66,3 % |
| Service atteint | 717 | 94,7 % |
C’est la cascade du premier cours du module 4, dans un autre secteur — des dénominateurs enchaînés, chaque porte mesurée face à la précédente. L’arithmétique est la même. La première porte ne l’est pas.
Le consentement n’est pas une mesure de performance
Les 212 cas sans consentement peuvent être comptés de trois façons, et une seule est défendable.
Comme des échecs. L’aboutissement de bout en bout devient 717 / 1 850 = 38,8 %. Cela traite la décision d’une personne comme un manquement du programme.
Comme des exclusions. L’aboutissement devient 717 / 1 638 = 43,8 % sur les cas ayant consenti. C’est le chiffre de performance.
Comme un constat à part entière. 11,5 % ont refusé, et pourquoi est une question de conception du service qui mérite d’être posée séparément.
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%})")
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)
)
Compter un cas sans consentement comme un échec du circuit fait deux erreurs à la fois. Cela fausse la performance de cinq points, et cela enregistre la décision autonome d’une personne comme un défaut du système qui lui a offert un choix.
Les deux comptent et la seconde davantage. Un indicateur qui traite le refus comme un échec crée une pression sur les travailleurs sociaux pour obtenir le consentement, ce qui est l’inverse du sens même du consentement éclairé.
Rapportez les trois nombres
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
Publiez le taux de consentement comme une ligne à part. Un taux de consentement qui baisse est un signal sur la confiance envers le service, et il est invisible si le consentement ne sert jamais que de filtre.
Là où le consentement n’est pas la porte
Deux situations où ce raisonnement ne s’applique pas, à énoncer pour que la règle ne soit pas sur-appliquée.
Les cas de protection de l’enfance concernant un jeune enfant relèvent d’une détermination de l’intérêt supérieur plutôt que du consentement de l’enfant, et le champ de consentement enregistre la décision de l’accompagnant. La logique du dénominateur est la même et le fondement éthique est différent.
Les urgences vitales donnent lieu à un référencement salvateur sans attendre un consentement au transfert de données. Ces cas figurent dans le circuit et la colonne de consentement ne les gouverne pas.
by_category = referrals.groupby("case_category")["consent_to_refer"].agg(
["mean", "size"]
)
print((by_category * [100, 1]).round(1))
referrals |> summarise(consent = mean(consent_to_refer), n = n(),
.by = case_category)
Vérifiez si le taux de consentement diffère par catégorie avant d’appliquer une règle unique à toutes. Là où il diffère, la décision de dénominateur peut devoir différer aussi, et le rapport doit dire quels cas ont été traités de quelle façon.
Les contradictions à résoudre d’abord
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()}")
referrals |> filter(!is.na(days_to_first_service), !referral_accepted) |>
count(referral_made, consent_to_refer)
Onze cas consignent un délai jusqu’au premier service sur un référencement qui n’a jamais été accepté. Six d’entre eux ne portent aucun référencement effectué, et un n’avait pas de consentement. Ce sont des contradictions logiques et elles doivent être résolues avant qu’un taux d’aboutissement quelconque soit crédible, car chacune est simultanément un numérateur et un non-dénominateur.
La résolution est un jugement et doit être consignée. Croire la date de service implique que les champs du circuit sont peu fiables ; croire les champs du circuit implique que la date de service est une faute de saisie. Dites ce que vous avez cru et combien de cas cela a déplacés.
La suite
Le circuit perd des cas à chaque porte. La leçon suivante trouve la porte où la plus grande part se perd, et le groupe de personnes pour qui chaque porte est pire.