Fiche pratique - RCP
Nom technique : rcp
📥 Télécharger un modèle de CSV
Vocation
Section intitulée « Vocation »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.
Format canonique d’import
Section intitulée « Format canonique d’import »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 attendu | Obligatoire | Nature |
|---|---|---|---|---|
source_rcp_id | Identifiant RCP (source) | code (majuscules, points/espaces retirés) | - | métadonnée RCP |
session_id | Identifiant session | code | - | métadonnée RCP |
rcp_date | Date de la RCP | date (JJ/MM/AAAA ou AAAA-MM-JJ) | oui | pivot temporel |
cancer_phase | Phase du cancer | enum - initial / relapse / unknown | - | métadonnée RCP |
quorum_reached | Quorum atteint | oui/non (true/1/o… acceptés) | - | métadonnée RCP |
document_status | Statut du document | enum - in_progress / completed / validated | - | métadonnée RCP |
discovery_mode | Mode de découverte | enum - screening / clinical / unknown | - | métadonnée RCP |
rcp_speciality | Spécialité / type de RCP | texte (ex. digestif, pneumologie, onco-hematologie) | - | métadonnée RCP |
rcp_location | Lieu de la RCP | texte (libellé seul) | - | métadonnée RCP |
cda_version | Version CDA | texte (ex. 2025.01) | - | métadonnée RCP |
care_plan_decision | Décision / plan de soins | valeur packée (texte libre, conservé brut) | - | texte libre |
clinical_context | Contexte clinique | valeur packée (texte libre, conservé brut) | - | texte libre |
tumors | Tumeurs | valeur packée → table fille. Entrées |, attributs : (voir packing ci-dessous) | - | tumeurs (1:N) |
participants | Participants | valeur packée → table fille. Entrées |, attributs : (voir packing ci-dessous) | - | participants (1:N) |
patient_last_name | Nom | texte | oui | identité patient |
patient_first_name | Prénom | texte | - | identité patient |
patient_birth_name | Nom naissance | texte | - | identité patient |
patient_birth_date | Date naissance | date (JJ/MM/AAAA ou AAAA-MM-JJ), pas dans le futur | - | identité patient |
patient_sex | Sexe | texte (M/F) | - | identité patient |
patient_ipp | IPP | texte (identifiant patient côté établissement organisateur) | - | identité patient |
patient_secu | N° Sécu (NIR) | NIR (seuls les 10 premiers chiffres conservés) | - | identité patient |
patient_address | Adresse | texte | - | adresse patient |
patient_postal_code | Code postal | code postal (zéros de tête restaurés, ex. 1000 → 01000) | - | adresse patient |
patient_city | Ville | texte | - | adresse patient |
patient_birth_commune | Commune de naissance | texte | - | lieu de naissance |
patient_birth_postal_code | Code postal de naissance | code postal | - | lieu de naissance |
patient_birth_insee_code | Code INSEE de naissance | texte | - | lieu de naissance |
structure_finess | FINESS de l’établissement organisateur | code FINESS (9 caractères) connu du registre ; vide accepté, inconnu ou malformé → ligne rejetée | - | structure |
rrc_label | Réseau Régional de Cancérologie | texte | - | structure source |
prescriber_name | Prescripteur (médecin demandeur/référent) | texte | - | prescripteur |
prescriber_address | Adresse prescripteur | texte | - | prescripteur |
prescriber_postal_code | CP prescripteur | code postal | - | prescripteur |
prescriber_city | Ville prescripteur | texte | - | prescripteur |
prescriber_rpps | RPPS prescripteur | code | - | prescripteur |
document | Document 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_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 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
Préparer son CSV à partir de la source brute
Section intitulée « Préparer son CSV à partir de la source brute »Objectif : transformer l’extraction tabulaire du CDA CANCER-FRCP (ou une saisie manuelle) en une ligne canonique par fiche RCP.
- Une ligne par fiche RCP. Si la source liste plusieurs tumeurs ou plusieurs participants, ne dupliquez pas la ligne : packez-les dans
tumors/participants. - Dates (
rcp_date,patient_birth_date) : formatJJ/MM/AAAAouAAAA-MM-JJuniquement.rcp_dateest obligatoire. - 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. - Packer les tumeurs dans
tumorsselontopo:morpho:laterality:cT:cN:cM:stage:role, entrées séparées par|. Conservez la primitive enprimary; les métastases/autres primitives enmetastasis/other_primary. Un attribut que vous ne renseignez pas se laisse vide, en gardant les:. - Packer les participants dans
participantsselonname:rpps:speciality:role:in_quorum. Renseignezin_quorum=truepour les spécialités qui comptent au quorum INCa (≥ 3 spécialités), etquorum_reached(au niveau fiche) pour indiquer si le quorum est atteint. Les deux sont fournis, pas calculés. - 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.
- 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. - 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. - 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.
Comportement par défaut à l’import
Section intitulée « Comportement par défaut à l’import »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 :
0ou 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.5ou tout texte mettent la ligne en erreur à la pré-validation.
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 fiche RCP) en trois temps :
- 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é). - 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.
- 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.
Spécificités
Section intitulée « Spécificités »- Deux tables filles :
report_rcp_tumors(1:N, alimentée partumors) etreport_rcp_participants(1:N, alimentée parparticipants). 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_idsisource_rcp_idprésent, sinonstructure + 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) ETcimo3_topo_code/cimo3_morpho_codesont stockés.
Points d’attention
Section intitulée « Points d’attention »- Ligne en erreur à la pré-validation :
rcp_dateabsente ou mal formatée, oupatient_last_namevide (les deux seuls champs obligatoires) ;cancer_phase,document_statusoudiscovery_modehors de ses valeurs ; une entrée detumorsou departicipantshors 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
topoquand 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.4seul 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 pourtumors, 5 pourparticipants) ; une tumeur n’a pas detopo(CouDpuis 2 ou 3 chiffres) ; unemorphon’est pas au format8140/3;lateralityourolesort de sa liste ; un TNM ou un stade dépasse 10 caractères ; un participant n’a ni nom ni RPPS ;in_quorumn’est pas un oui/non lisible.