Aller au contenu

Fiche pratique - Dépistage organisé

Nom technique : depistage

📥 Télécharger un modèle de CSV

Le signalement « Dépistage organisé » enregistre les tests des trois programmes nationaux : sein (breast), colorectal (colorectal) et col de l’utérus (cervix), issus des CRCDC (format Santé publique France). Ce n’est pas une déclaration de cancer : un test, même positif, n’est pas un diagnostic. L’intérêt registre est le cancer d’intervalle (cancer survenant ≤ 2 ans après un test négatif) : on rattache l’historique de dépistage à un patient déjà connu.

Une ligne = un test de dépistage (plusieurs lignes par personne, le dépistage étant récurrent).

Séparateur de colonnes ; recommandé (, également auto-détecté) ; entourez de guillemets "…" toute cellule contenant le séparateur ou un retour ligne. En-têtes en snake_case, identiques aux csvKey du tableau ci-dessous et dans l’ordre du manifeste. Toutes les colonnes sont des champs fournis par le data manager, sauf les trois contrôles d’import (can_create_patient, can_create_tumor, excluded) en fin de tableau.

Colonne (csvKey)LibelléFormat attenduObligatoireNature
screening_programProgrammeenum - breast / colorectal / cervixouifourni
screening_numberN° de dépistagecode (mis en majuscules, points/espaces retirés) - N° SpF, 14 car.ouifourni
test_dateDate du testdate (JJ/MM/AAAA ou AAAA-MM-JJ)ouifourni
previous_test_dateDate du test précédentdate (JJ/MM/AAAA ou AAAA-MM-JJ)-fourni
screening_roundRang / vagueentier-fourni
test_resultRésultat du testenum - negative / positive / not_analysable / unknown-fourni
final_diagnosisSituation finaleenum - normal / benign / suspect / polyp_low_risk / polyp_high_risk / cancer / pending / lost_to_followup / unknown-fourni
complementary_exam_resultRésultat examen complémentairevaleur packée / texte libre (narration du bilan : coloscopie, ACR, colposcopie…)-fourni
patient_last_nameNomtexte (nom marital)ouifourni
patient_first_namePrénomtexte-fourni
patient_birth_nameNom naissancetexte-fourni
patient_birth_dateDate naissancedate (JJ/MM/AAAA ou AAAA-MM-JJ), pas dans le futur-fourni
patient_sexSexetexte (M/F)-fourni
patient_secuN° Sécu (NIR)NIR - seuls les 10 premiers chiffres sont conservés-fourni
patient_addressAdressetexte-fourni
patient_postal_codeCode postalcode postal (zéros de tête restaurés)-fourni
patient_cityVilletexte-fourni
residence_insee_codeCode INSEE de résidencetexte (5 car.)-fourni
structure_finessFINESS de l’établissementcode FINESS (9 caractères) connu du registre ; vide accepté, inconnu ou malformé → ligne rejetée-fourni
prescriber_namePrescripteurtexte-fourni
prescriber_addressAdresse prescripteurtexte-fourni
prescriber_postal_codeCP prescripteurcode postal (zéros de tête restaurés)-fourni
prescriber_cityVille prescripteurtexte-fourni
prescriber_rppsRPPS prescripteurcode (mis en majuscules, points/espaces retirés)-fourni
documentDocument associénom de fichier (extension comprise) d’une entrée de l’archive ZIP déposée avec le CSV ; vide accepté, nom absent → ligne sans document (voir Documents associés)-document
can_create_patientPeut créer un patientoui / non-contrôle d’import
can_create_tumorPeut créer une tumeuroui / non-contrôle d’import
excludedExcluentier (0/vide = non exclu ; 1 = motif par défaut ; ≥ 2 = motif registre)-contrôle d’import

Télécharger un modèle de CSV au format attendu

Le data manager transforme son export CRCDC/SpF (sein, colorectal ou col de l’utérus - formats natifs distincts) vers ce format canonique unique. Check-list :

  1. Périmètre. Ne garder que les trois programmes couverts : sein, colorectal et col de l’utérus. Tout autre dépistage organisé (peau, prostate…) est hors périmètre et à écarter en amont.
  2. screening_program (obligatoire) : forcer la valeur d’enum exacte breast / colorectal / cervix selon le fichier source traité.
  3. screening_number (obligatoire) : reporter le N° de dépistage SpF. C’est la clé de déduplication - sans lui la ligne est rejetée.
  4. test_result et final_diagnosis : mapper les codes source vers les valeurs d’enum lors du prétraitement - ces deux colonnes doivent arriver déjà normalisées. Tout résultat illisible ou non mappable → unknown côté test_result ; situation finale inconnue → unknown côté final_diagnosis.
  5. Dates (test_date, previous_test_date, patient_birth_date) : normaliser en JJ/MM/AAAA (ou AAAA-MM-JJ).
  6. NIR (patient_secu) : le système ne conserve que les 10 premiers chiffres (garde-fou : espaces et caractères non numériques retirés, troncature à 10 chiffres). Inutile de le tronquer à la main.
  7. Bilan / examen complémentaire : verser la narration libre (résultat coloscopie, ACR, colposcopie, histologie) dans complementary_exam_result.
  8. Prescripteur : renseigner prescriber_name et, si dispo, l’adresse/ville/CP/RPPS. La provenance du prescripteur (ville vs hôpital vs labo) est utile à l’enquête ARC.
  9. Contrôles d’import (can_create_patient, can_create_tumor, excluded) : laisser vides dans le cas général (cf. Comportement par défaut à l’import). Les renseigner seulement pour surcharger une ligne précise.

Note sur les négatifs de patients inconnus : par défaut, un test négatif rattaché à un patient qui n’est pas déjà connu du registre n’est pas conservé ; la ligne reste en attente, sans création de patient. Les négatifs ne sont conservés que pour un patient déjà connu.

Cette typologie est en rattachement seul : par défaut can_create_patient = false et can_create_tumor = false. Raison métier : on importe négatifs et positifs sans filtre clinique, et un test n’étant pas un diagnostic, le dépistage ne doit ni créer un nouveau patient ni ouvrir une tumeur - il se rattache à un patient déjà connu, sinon la ligne reste en attente.

Le data manager surcharge par ligne via les colonnes can_create_patient / can_create_tumor (oui ou non uniquement, toute autre valeur met la ligne en erreur à la pré-validation). Forcer can_create_tumor = oui ne crée jamais de tumeur sur un dépistage non cancéreux : un garde-fou empêche la création de tumeur dès que final_diagnosis ≠ cancer (detected_cancer = false).

Colonne excluded :

  • 0 ou vide = ligne non exclue ;
  • 1 = exclusion avec le motif par défaut (motif global n°1) ;
  • ≥ 2 = motif spécifique du catalogue d’exclusion du registre. Un numéro inconnu du catalogue fait rejeter la ligne.
  • Seuls des chiffres sont acceptés : oui, x, -1, 1.5 ou tout texte mettent la ligne en erreur à la pré-validation.

Une fois votre fichier déposé, le système traite chaque ligne (chaque test) en trois temps :

  1. Validation - champs obligatoires (screening_program, screening_number, test_date, patient_last_name) et formats. Une ligne invalide est rejetée, motif affiché dans l’aperçu avant import.
  2. Mise en qualité - il dérive la topographie CIM-O-3 directement du programme (sein → C50, colorectal → C18, col → C53), avec son groupe topo IARC, et déduit detected_cancer de la situation finale. Pas de transcodage morphologique : un test n’est pas un diagnostic.
  3. Enregistrement - les lignes valides deviennent des signalements ; un même test re-livré met à jour la ligne existante (upsert).

Le rapprochement avec un patient (identito-vigilance) ne se déclenche pas automatiquement pour le dépistage : l’identité créée à l’import reste en attente d’un rattachement ultérieur. Rien à préparer pour ça dans le CSV.

  • Déduplication / réimport : la clé d’un test est screening_number + test_date + screening_program. test_date est volontairement dans la clé - deux tests d’une même personne à des dates différentes ne sont pas des doublons et restent tous deux visibles. Seul le même test re-livré dans une vague CRCDC ultérieure entre en collision : il est alors upserté, ce qui permet de compléter une situation finale arrivée dans une vague suivante. Seules les données du test sont mises à jour : l’identité et l’adresse restent celles du premier envoi. Robuste aux livraisons cumulatives comme incrémentales.
  • Transcodage propre : pas de transcodage CIM-O-3 ; la topographie cimo3_topo_code est dérivée en dur du programme (indication d’organe, sans morphologie). Le transcodage des résultats/situations est à la charge du data manager (cf. Préparer son CSV).
  • Champs particuliers : screening_number requis à l’import (rare pour un identifiant source) ; previous_test_date propre au calcul du cancer d’intervalle.
  • screening_number manquant → ligne rejetée (et clé de dédup ambiguë). Idem pour les autres obligatoires : screening_program, test_date, patient_last_name.
  • screening_program hors enum (peau, prostate, valeur libre) → ligne en erreur à la pré-validation. Filtrer peau/prostate en amont.
  • test_result / final_diagnosis non normalisés : une valeur hors enum n’est pas devinée et met la ligne en erreur à la pré-validation (la casse est ignorée : Positive est lu positive). Mapper soi-même ; à défaut, unknown.
  • Forcer can_create_tumor = oui sur un non-cancer reste sans effet : le garde-fou bloque la création de tumeur si final_diagnosis ≠ cancer. detected_cancer est calculé, jamais importé.
  • Même test re-livré : c’est un upsert, pas un doublon.