Aller au contenu

Fiche pratique - RCP

Nom technique : rcp

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

Le signalement RCP enregistre les comptes rendus de Réunion de Concertation Pluridisciplinaire : la décision thérapeutique arbitrée collégialement par des cancérologues pour un cas de cancer. C’est en principe la source de plus haute qualité (cas codé par des spécialistes, CIM-O-3 natives, TNM clinique), mais en pratique souvent pauvrement codée : au mieux identité + topographie.

Une ligne = une fiche RCP.

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.

Colonnes packées (tumors, participants) : entrées multiples séparées par |, et à l’intérieur de chaque entrée les attributs séparés par : (tuple positionnel). Le SI éclate ces deux colonnes vers les tables filles.

Colonne (csvKey)LibelléFormat attenduObligatoireNature
source_rcp_idIdentifiant RCP (source)code (majuscules, points/espaces retirés)-métadonnée RCP
session_idIdentifiant sessioncode-métadonnée RCP
rcp_dateDate de la RCPdate (JJ/MM/AAAA ou AAAA-MM-JJ)ouipivot temporel
cancer_phasePhase du cancerenum - initial / relapse / unknown-métadonnée RCP
quorum_reachedQuorum atteintoui/non (true/1/o… acceptés)-métadonnée RCP
document_statusStatut du documentenum - in_progress / completed / validated-métadonnée RCP
discovery_modeMode de découverteenum - screening / clinical / unknown-métadonnée RCP
rcp_specialitySpécialité / type de RCPtexte (ex. digestif, pneumologie, onco-hematologie)-métadonnée RCP
rcp_locationLieu de la RCPtexte (libellé seul)-métadonnée RCP
cda_versionVersion CDAtexte (ex. 2025.01)-métadonnée RCP
care_plan_decisionDécision / plan de soinsvaleur packée (texte libre, conservé brut)-texte libre
clinical_contextContexte cliniquevaleur packée (texte libre, conservé brut)-texte libre
tumorsTumeursvaleur packée → table fille. Entrées |, attributs : (voir packing ci-dessous)-tumeurs (1:N)
participantsParticipantsvaleur packée → table fille. Entrées |, attributs : (voir packing ci-dessous)-participants (1:N)
patient_last_nameNomtexteouiidentité patient
patient_first_namePrénomtexte-identité patient
patient_birth_nameNom naissancetexte-identité patient
patient_birth_dateDate naissancedate (JJ/MM/AAAA ou AAAA-MM-JJ), pas dans le futur-identité patient
patient_sexSexetexte (M/F)-identité patient
patient_ippIPPtexte (identifiant patient côté établissement organisateur)-identité patient
patient_secuN° Sécu (NIR)NIR (seuls les 10 premiers chiffres conservés)-identité patient
patient_addressAdressetexte-adresse patient
patient_postal_codeCode postalcode postal (zéros de tête restaurés, ex. 1000 → 01000)-adresse patient
patient_cityVilletexte-adresse patient
patient_birth_communeCommune de naissancetexte-lieu de naissance
patient_birth_postal_codeCode postal de naissancecode postal-lieu de naissance
patient_birth_insee_codeCode INSEE de naissancetexte-lieu de naissance
structure_finessFINESS de l’établissement organisateurcode FINESS (9 caractères) connu du registre ; vide accepté, inconnu ou malformé → ligne rejetée-structure
rrc_labelRéseau Régional de Cancérologietexte-structure source
prescriber_namePrescripteur (médecin demandeur/référent)texte-prescripteur
prescriber_addressAdresse prescripteurtexte-prescripteur
prescriber_postal_codeCP prescripteurcode postal-prescripteur
prescriber_cityVille prescripteurtexte-prescripteur
prescriber_rppsRPPS prescripteurcode-prescripteur
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 du registre)-contrôle d’import

Packing tumors (entrées séparées par |, attributs positionnels séparés par :) : topo:morpho:laterality:cT:cN:cM:stage:role

  • topo = topographie CIM-O-3 (codée CIM-10 chapitre II par le CDA), morpho = morphologie CIM-O (ex. 8140/3), laterality = left/right/bilateral/midline/unknown, cT/cN/cM = TNM clinique (UICC v7), stage = stade synthétique, role = primary/metastasis/other_primary.
  • Attributs vides admis : C787:8140/3:unknown:::M1::metastasis (laisser le champ vide entre les :).

Packing participants (entrées séparées par |, attributs positionnels séparés par :) : name:rpps:speciality:role:in_quorum

  • role = coordinator/requester/presenter/treating_physician/correspondent/participant, in_quorum = true/false (compte dans le quorum INCa).

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

Objectif : transformer l’extraction tabulaire du CDA CANCER-FRCP (ou une saisie manuelle) en une ligne canonique par fiche RCP.

  1. Une ligne par fiche RCP. Si la source liste plusieurs tumeurs ou plusieurs participants, ne dupliquez pas la ligne : packez-les dans tumors / participants.
  2. Dates (rcp_date, patient_birth_date) : format JJ/MM/AAAA ou AAAA-MM-JJ uniquement. rcp_date est obligatoire.
  3. 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.
  4. Packer les tumeurs dans tumors selon topo:morpho:laterality:cT:cN:cM:stage:role, entrées séparées par |. Conservez la primitive en primary ; les métastases/autres primitives en metastasis/other_primary. Un attribut que vous ne renseignez pas se laisse vide, en gardant les :.
  5. Packer les participants dans participants selon name:rpps:speciality:role:in_quorum. Renseignez in_quorum=true pour les spécialités qui comptent au quorum INCa (≥ 3 spécialités), et quorum_reached (au niveau fiche) pour indiquer si le quorum est atteint. Les deux sont fournis, pas calculés.
  6. Conserver le code source : gardez à la fois le CIM-10 d’origine (traçabilité) et le CIM-O-3 - pas de transcodage à faire de votre côté, le SI valide sans rejeter.
  7. Textes libres (care_plan_decision, clinical_context) : concaténez le compte rendu / histoire de la maladie / questions / plan de soins. Optionnels (l’ARC ouvre le PDF de toute façon). Encadrez de guillemets si le texte contient ;, , ou un retour ligne.
  8. Structure organisatrice : structure_finess = FINESS du 3C ou de l’établissement organisateur, connu du registre (sinon la ligne est rejetée) ; rrc_label = le RRC parent.
  9. Amendement : ne réécrasez jamais une fiche. Une fiche amendée est une nouvelle ligne (voir Points d’attention).

Pièges de format à éviter : un séparateur | ou : à l’intérieur d’un texte libre non encadré de guillemets casse le packing ; ne supprimez pas les : vides d’un attribut manquant.

Valeurs par défaut RCP : can_create_patient = false et can_create_tumor = false. La RCP est donc en rattachement seul : à l’import, le SI ne crée ni patient ni tumeur automatiquement. Raison métier : la fiche RCP arrive en aval du parcours et doit se rattacher à un patient/une tumeur déjà connus du registre ; la décision de créer revient à l’ARC, pas à l’import.

Surcharge par ligne : renseignez can_create_patient / can_create_tumor à oui pour autoriser la création sur cette ligne précise, non pour la refuser explicitement. Toute autre valeur met la ligne en erreur à la pré-validation ; une cellule vide laisse le défaut RCP (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 fiche RCP) en trois temps :

  1. Validation - champs obligatoires (rcp_date, patient_last_name) et formats, y compris chaque tumeur et chaque participant packé. Une ligne invalide est rejetée, motif affiché dans l’aperçu ; un code topo/morpho inconnu doit lever un simple avertissement, jamais un rejet (pas encore implémenté : aujourd’hui un code inconnu n’est pas signalé).
  2. Mise en qualité - il éclate les tumeurs et les participants vers leurs tables filles, conserve les codes CIM-O-3 tels quels (pas de transcodage) et en déduit les groupes IARC topographique et morphologique de chaque tumeur.
  3. Enregistrement - les lignes valides deviennent des signalements, avec leurs tables filles (tumeurs, participants).

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

  • Deux tables filles : report_rcp_tumors (1:N, alimentée par tumors) et report_rcp_participants (1:N, alimentée par participants). Le SI éclate les colonnes packées.
  • Pas de transcodage, aucune ligne rejetée pour un code inconnu : un code topo/morpho inconnu doit générer un avertissement, jamais un rejet (pas encore implémenté : aujourd’hui aucun contrôle de référentiel, le code est enregistré sans signalement). Un code mal formé, lui, met la ligne en erreur à la pré-validation.
  • Déduplication : clé = structure + source_rcp_id + session_id si source_rcp_id présent, sinon structure + patient_ipp + rcp_date + topo. Pas d’upsert : un CR ré-envoyé à l’identique est ignoré (skip).
  • Amendement chaîné : une fiche amendée est une nouvelle entrée rattachée à la précédente via amends_report_rcp_id (préserve l’historique médical) - jamais un écrasement.
  • Doubles codages conservés : cim10_code (source) ET cimo3_topo_code / cimo3_morpho_code sont stockés.
  • Ligne en erreur à la pré-validation : rcp_date absente ou mal formatée, ou patient_last_name vide (les deux seuls champs obligatoires) ; cancer_phase, document_status ou discovery_mode hors de ses valeurs ; une entrée de tumors ou de participants hors format (voir Packing fragile).
  • Fiche à tumeur peu codée : pas d’erreur ; la tumeur de la fiche est conservée avec la seule topographie (morphologie/TNM vides). Renseignez au moins topo quand vous le pouvez.
  • TNM quasi toujours vide en réel : ne bloquez pas la prep dessus ; packez les : vides.
  • Rattachement seul (voir Comportement par défaut à l’import) : sans surcharge, aucun patient ni tumeur n’est créé.
  • Ré-import à l’identique = skip silencieux (dédup, pas d’upsert). Pour corriger une fiche, passez par un amendement (nouvelle ligne chaînée), pas par un ré-envoi modifié espérant un écrasement.
  • Packing fragile : un | ou : dans un texte libre non encadré de guillemets décale tous les attributs du tuple ; un attribut manquant sans son : décale le reste. Les attributs de fin peuvent être omis (C50.4 seul est une tumeur valide), mais chaque entrée est contrôlée à la pré-validation et met la ligne en erreur si : elle a plus d’attributs que prévu (8 pour tumors, 5 pour participants) ; une tumeur n’a pas de topo (C ou D puis 2 ou 3 chiffres) ; une morpho n’est pas au format 8140/3 ; laterality ou role sort de sa liste ; un TNM ou un stade dépasse 10 caractères ; un participant n’a ni nom ni RPPS ; in_quorum n’est pas un oui/non lisible.