Fiche pratique - Dépistage organisé
Nom technique : depistage
📥 Télécharger un modèle de CSV
Vocation
Section intitulée « Vocation »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.
Format canonique d’import
Section intitulée « Format canonique d’import »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 attendu | Obligatoire | Nature |
|---|---|---|---|---|
screening_program | Programme | enum - breast / colorectal / cervix | oui | fourni |
screening_number | N° de dépistage | code (mis en majuscules, points/espaces retirés) - N° SpF, 14 car. | oui | fourni |
test_date | Date du test | date (JJ/MM/AAAA ou AAAA-MM-JJ) | oui | fourni |
previous_test_date | Date du test précédent | date (JJ/MM/AAAA ou AAAA-MM-JJ) | - | fourni |
screening_round | Rang / vague | entier | - | fourni |
test_result | Résultat du test | enum - negative / positive / not_analysable / unknown | - | fourni |
final_diagnosis | Situation finale | enum - normal / benign / suspect / polyp_low_risk / polyp_high_risk / cancer / pending / lost_to_followup / unknown | - | fourni |
complementary_exam_result | Résultat examen complémentaire | valeur packée / texte libre (narration du bilan : coloscopie, ACR, colposcopie…) | - | fourni |
patient_last_name | Nom | texte (nom marital) | oui | fourni |
patient_first_name | Prénom | texte | - | fourni |
patient_birth_name | Nom naissance | texte | - | fourni |
patient_birth_date | Date naissance | date (JJ/MM/AAAA ou AAAA-MM-JJ) | - | fourni |
patient_sex | Sexe | texte (1 car. : F / M) | - | fourni |
patient_secu | N° Sécu (NIR) | NIR - seuls les 10 premiers chiffres sont conservés | - | fourni |
patient_address | Adresse | texte | - | fourni |
patient_postal_code | Code postal | code postal (zéros de tête restaurés) | - | fourni |
patient_city | Ville | texte | - | fourni |
residence_insee_code | Code INSEE de résidence | texte (5 car.) | - | fourni |
finess | FINESS | code (mis en majuscules, points/espaces retirés) | - | fourni |
prescriber_name | Prescripteur | texte | - | fourni |
prescriber_address | Adresse prescripteur | texte | - | fourni |
prescriber_postal_code | CP prescripteur | code postal (zéros de tête restaurés) | - | fourni |
prescriber_city | Ville prescripteur | texte | - | fourni |
prescriber_rpps | RPPS prescripteur | code (mis en majuscules, points/espaces retirés) | - | fourni |
can_create_patient | Peut créer un patient | oui / non | - | contrôle d’import |
can_create_tumor | Peut créer une tumeur | oui / non | - | contrôle d’import |
excluded | Exclu | entier (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
Préparer son CSV à partir de la source brute
Section intitulée « Préparer son CSV à partir de la source brute »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 :
- 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.
screening_program(obligatoire) : forcer la valeur d’enum exactebreast/colorectal/cervixselon le fichier source traité.screening_number(obligatoire) : reporter le N° de dépistage SpF. C’est la clé de déduplication - sans lui la ligne est rejetée.test_resultetfinal_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 →unknowncôtétest_result; situation finale inconnue →unknowncôtéfinal_diagnosis.- Dates (
test_date,previous_test_date,patient_birth_date) : normaliser enJJ/MM/AAAA(ouAAAA-MM-JJ). - 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. - Bilan / examen complémentaire : verser la narration libre (résultat coloscopie, ACR, colposcopie, histologie) dans
complementary_exam_result. - Prescripteur : renseigner
prescriber_nameet, si dispo, l’adresse/ville/CP/RPPS. La provenance du prescripteur (ville vs hôpital vs labo) est utile à l’enquête ARC. - 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 orpheline, sans création de patient. Les négatifs ne sont conservés que pour un patient déjà connu.
Comportement par défaut à l’import
Section intitulée « Comportement par défaut à l’import »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 orpheline.
Le data manager surcharge par ligne via les colonnes can_create_patient / can_create_tumor (oui / non). 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 :
0ou vide = ligne non exclue ;1(ou une valeur vraie sans numéro :oui/x/true) = 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.
Ce que fait le système à l’import
Section intitulée « Ce que fait le système à l’import »Une fois votre fichier déposé, le système traite chaque ligne (chaque test) en trois temps :
- 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. - Mise en qualité - il dérive la topographie CIM-O-3 directement du programme (sein →
C50, colorectal →C18, col →C53) et déduitdetected_cancerde la situation finale. Pas de transcodage morphologique : un test n’est pas un diagnostic. - 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 orpheline en attendant un rattachement ultérieur. Rien à préparer pour ça dans le CSV.
Spécificités
Section intitulée « Spécificités »- Déduplication / réimport : la clé d’un test est
screening_number + test_date + screening_program.test_dateest 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. Robuste aux livraisons cumulatives comme incrémentales. - Transcodage propre : pas de transcodage CIM-O-3 ; la topographie
cimo3_topo_codeest 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_numberrequis à l’import (rare pour un identifiant source) ;previous_test_datepropre au calcul du cancer d’intervalle.
Points d’attention
Section intitulée « Points d’attention »screening_numbermanquant → ligne rejetée (et clé de dédup ambiguë). Idem pour les autres obligatoires :screening_program,test_date,patient_last_name.screening_programhors enum (peau,prostate, valeur libre) → ligne rejetée. Filtrer peau/prostate en amont.test_result/final_diagnosisnon normalisés : une valeur hors enum n’est pas devinée. Mapper soi-même ; à défaut,unknown.- Forcer
can_create_tumor = ouisur un non-cancer reste sans effet : le garde-fou bloque la création de tumeur sifinal_diagnosis ≠ cancer.detected_cancerest calculé, jamais importé. - Même test re-livré : c’est un upsert, pas un doublon.