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)-identité patient
patient_sexSexetexte (F / M)-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) - alias d’en-tête NIR-identité patient
patient_addressAdressetexte-adresse patient
patient_postal_codeCode postalcode postal (zéros de tête restaurés, ex. 100001000)-adresse patient
patient_cityVilletexte-adresse patient
patient_birth_communeCommune de naissancetexte - alias Commune naissance-lieu de naissance
patient_birth_postal_codeCode postal de naissancecode postal - alias CP naissance-lieu de naissance
patient_birth_insee_codeCode INSEE de naissancetexte - alias Code INSEE naissance-lieu de naissance
finess_organisateurFINESS organisateurcode-structure source
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
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 : finess_organisateur = 3C ou établissement organisateur ; rrc_label = le RRC parent. La structure n’est pas identifiée par FINESS de façon fiable ; le FINESS est conservé à titre indicatif (traçabilité).
  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 (ou 1/true/o/x) pour autoriser la création sur cette ligne précise, non pour la refuser explicitement. Une cellule vide laisse le défaut RCP (false).

Colonne excluded :

  • 0 ou 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.

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. Une ligne invalide est rejetée, motif affiché dans l’aperçu ; un code topo/morpho inconnu lève un simple avertissement, jamais un rejet.
  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 calcule les groupes (Berg, IARC) à partir de topographie + morphologie.
  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 orpheline en attendant 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 : topo et morpho sont validées contre les référentiels (un code inconnu génère un avertissement, jamais un rejet) ; berg_group/topo_iarc sont calculés depuis topo + morpho.
  • 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.
  • Seul rejet de ligne : rcp_date absente ou mal formatée, ou patient_last_name vide (les deux seuls champs obligatoires). Une date dans un format non reconnu est lue comme vide → rejet.
  • 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. Vérifiez le nombre de : par entrée (7 pour tumors, 4 pour participants).