Aller au contenu

Fiche pratique - Signalement générique

Nom technique : generic

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

Le type générique est la catégorie de repli du SI Registres : il enregistre une donnée en périmètre du registre qui ne rentre dans aucune catégorie établie (ACP, PMSI, ALD, RCP, dépistage). Chaque ligne porte un source_label libre qui joue le rôle de sous-type. Sa vocation est de capter une donnée qui serait sinon perdue, en restant très souple sur le contenu : seuls le nom et la date de naissance sont exigés.

Une ligne = un signalement (un document ou un cas).

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
patient_last_nameNomtexteouifourni
patient_first_namePrénomtexte-fourni
patient_birth_nameNom naissancetexte-fourni
patient_birth_dateDate naissancedate (JJ/MM/AAAA ou AAAA-MM-JJ)ouifourni
patient_sexSexetexte (M ou F)-fourni
patient_nipIdentifiant patient (NIP/IPP)texte-fourni
patient_secuN° Sécu (NIR)NIR (seuls les 10 premiers chiffres conservés)-fourni
patient_addressAdressetexte-fourni
patient_postal_codeCode postalcode postal (zéros de tête restaurés)-fourni
patient_cityVilletexte-fourni
patient_birth_communeCommune de naissancetexte-fourni
patient_birth_postal_codeCode postal de naissancecode postal (zéros de tête restaurés)-fourni
patient_birth_insee_codeCode INSEE de naissancetexte (5 caractères)-fourni
finessFINESScode (majuscules, points/espaces retirés)-fourni
prescriber_namePrescripteurtexte (médecin ou structure)-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 (majuscules, points/espaces retirés)-fourni
cimo3_topo_codeCode CIM-O-3 topographiecode (ex. C504) - saisi tel quel, jamais transcodé-fourni
cimo3_morpho_codeCode CIM-O-3 morphologiecode (ex. 8500/3) - saisi tel quel, jamais transcodé-fourni
report_dateDate du documentdate (JJ/MM/AAAA ou AAAA-MM-JJ)-fourni
cr_contentCompte renduvaleur brute (texte libre, conservé tel quel)-fourni
can_create_patientPeut créer un patientoui/non (1/0, vrai/faux, x acceptés)-contrôle
can_create_tumorPeut créer une tumeuroui/non (1/0, vrai/faux, x acceptés)-contrôle
excludedExcluentier (0/vide, 1, ou ≥ 2 = motif registre)-contrôle

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

Le travail du data manager consiste à aplatir SA source vers les colonnes ci-dessus. Check-list :

  1. Une source = un import = un source_label. Si vous mélangez plusieurs origines (mésothéliome + biomol), faites plusieurs imports : le source_label est saisi une fois dans l’interface et s’applique à tout le fichier. Choisissez un libellé stable et parlant, c’est lui qui servira de sous-type pour les filtres ultérieurs.
  2. Garantir les deux obligatoires. Chaque ligne doit avoir patient_last_name ET patient_birth_date non vides.
  3. Normaliser les dates (patient_birth_date, report_date) en JJ/MM/AAAA ou AAAA-MM-JJ. Une date mal formée est lue comme vide → rejet si c’est la date de naissance.
  4. 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.
  5. CIM-O-3 - optionnel et brut. Un seul couple cimo3_topo_code / cimo3_morpho_code par ligne (topo type C504, morpho type 8500/3). Aucun transcodage côté SI : si votre source code en CIM-10 ou SNOMED, transcodez en CIM-O-3 EN AMONT. Si vous n’avez pas de code, laissez vide.
  6. Plusieurs tumeurs = plusieurs lignes. Le type générique est mono-code : pour deux localisations sur le même patient, dupliquez la ligne identité et changez le couple topo/morpho. Ne tentez pas de packer plusieurs codes dans une cellule.
  7. Données non structurées dans cr_content. Tout le texte libre va dans cr_content, conservé tel quel. Encadrez de guillemets "…" toute cellule contenant un ;.
  8. FINESS par ligne (optionnel). Renseignez finess quand la ligne provient d’un établissement précis et identifiable ; sinon laissez vide, la ligne prendra la structure choisie dans l’interface.
  9. Dédoublonner EN AMONT. Il n’y a aucune déduplication à l’import : chaque ligne crée un signalement. Si votre source contient des doublons, nettoyez-les avant l’import (voir Spécificités et Points d’attention).

Valeurs par défaut : can_create_patient = true et can_create_tumor = true. Le type générique n’est pas en « rattachement seul » : par défaut une ligne peut créer aussi bien le patient que la tumeur (une tumeur seulement si un code CIM-O-3 valide est présent). C’est cohérent avec sa vocation de captation : la donnée générique est souvent la seule trace d’un cas, il faut donc pouvoir matérialiser patient et tumeur, pas seulement rattacher à un existant.

Surcharge par ligne : mettez can_create_patient / can_create_tumor à non (ou 0/faux) pour interdire la création sur une ligne précise (ex. donnée trop incertaine, on veut seulement tenter un rattachement). Vide = on garde le défaut true.

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 en trois temps :

  1. Validation - champs obligatoires (patient_last_name, patient_birth_date) et formats de dates. Une ligne invalide est rejetée, motif affiché dans l’aperçu avant import.
  2. Mise en qualité - très légère : les codes CIM-O-3 sont conservés tels quels (pas de transcodage, ni de groupes Berg/IARC, ni de code caractérisant). La validité d’un code n’est vérifiée qu’à la création de tumeur, pas à l’import.
  3. Enregistrement - les lignes valides deviennent des signalements (une ligne = un signalement, pas de déduplication).

Le rapprochement avec un patient (identito-vigilance) se fait ensuite, dans une étape séparée, sur l’identité créée à l’import : rien à préparer pour ça dans le CSV.

  • Aucune déduplication, aucun upsert : pas de dedup_hash ni de source_record_id. Réimporter le même fichier recrée des doublons. La maîtrise des doublons est entièrement à la charge du data manager, en amont.
  • CIM-O-3 sans transcodage ni dérivation : les codes sont stockés bruts. La validation des codes ne joue pas à l’import mais à la consommation (création de tumeur) : un code hors référentiel est conservé mais ne produira pas de tumeur.
  • source_label = sous-type : champ libre saisi dans l’interface, propre à chaque registre - d’où la non-comparabilité inter-registres.
  • prescriber_name polyvalent : un seul champ pour le médecin ou la structure prescriptrice.
  • cr_content : champ texte libre pour les données non structurées.
  • Rejet de ligne : absence ou format invalide de patient_last_name ou patient_birth_date. Ce sont les seuls champs obligatoires - tout le reste, CIM-O-3 compris, peut être vide sans rejet.
  • Date au mauvais format = champ vide : une patient_birth_date mal formatée est lue comme vide, donc la ligne est rejetée ; une report_date mal formatée est juste perdue (silencieusement vide).
  • Code CIM-O-3 hors référentiel (coquille, code inconnu) : conservé à l’import, mais aucune tumeur n’est créée. Vérifiez vos codes en amont si vous voulez que la tumeur soit créée.
  • Doublons silencieux : aucune protection. Un réimport ou des lignes redondantes créent autant de signalements. À nettoyer avant import.
  • source_label n’est pas une colonne : ne l’ajoutez pas au CSV, il serait ignoré. Il se saisit dans l’interface et vaut pour tout le fichier - d’où un import par source.
  • Mono-code : packer plusieurs couples topo/morpho dans une cellule ne fonctionne pas ; il faut dupliquer la ligne. Tout caractère superflu dans un code (8500 / 3) est nettoyé (points/espaces retirés, majuscules).