# Localisation géographique des bénéficiaires
Crédits
Le contenu de cette fiche est rédigé par Claire-Lise Dubost (DREES).
Il s'inspire notamment de la note technique rédigée en 2014 par Pierre-Olivier Blotière (CNAM), ainsi que de codes fournis par les ARS.
Il a été complété par Alice Bergonzoni (DREES) et ses travaux sur la correction du code commune. Pour plus d'informations, contacter la DREES.
À savoir : Des références peuvent être données à la fin de la fiche. La dernière date de modification se situe tout en bas à droite.
La localisation géographique du bénéficiaire dans le SNDS est possible grâce aux variables indiquant le département et la commune de résidence. Il n’existe pas de niveau de localisation plus fin. Ces variables sont mises à disposition dans plusieurs tables du SNDS, dans des formats différents, avec parfois des informations contradictoires ou à corriger.
L’objet de cette fiche est d’aider à s’y retrouver parmi ces différentes informations pour assurer au mieux la qualité de la localisation du bénéficiaire.
# Remarques préliminaires
# Signification du code commune
L'information code commune est différente selon l'univers considéré.
Dans le SNIIRAM, le code commune est le code Insee. Il est remonté via la carte vitale au moment du soin, ou via les bases de données des caisses de sécurité sociale. En France, il y a environ 35 000 communes au 1er janvier 2019.
Dans le PMSI, le code commune est appelé code géographique.
Il s'agit du code postal lorsque celui-ci a plus de 1000 habitants, et d'un code postal agrégé pour les codes postaux de moins de 1000 habitants.
Ce code postal est déclaré par le bénéficiaire lors du séjour. D'après l'ATIH, en France il y a environ 6 000 codes géographiques en 2019.
Dans les causes de décès, le code commune est le code Insee. Il s’agit de l’information sur le certificat de décès.
# Association d'un bénéficiaire à un lieu de résidence
Différents critères permettent d'associer un bénéficiaire à un lieu de résidence.
La CNAM retient souvent le critère du dernier département de résidence.
Il est possible d’utiliser d’autres critères d'associations, tels que
- le département du plus grand nombre de soins sur la période d’étude ;
- le département de l’organisme de remboursement du bénéficiaire ;
- le département du professionnel exerçant le soin.
# Qualité de l'information
La plupart des codes département sont corrects. Des problèmes existent cependant pour la Corse, les DOM, et les bénéficiaires de certaines sections locales mutualistes étudiantes (SLM 617).
Beaucoup de corrections sont à faire sur les codes communes. On recourt alors notamment à des tables de correction, qui ne sont a priori pas exhaustives.
Une deuxième option consiste à faire recours à des fichiers mis à disposition par l’INSEE (notamment le fichier des évènements sur les commune) ou par le groupe La Poste (le fichier Hexaposte), si cette option permet d’être plus précis et d’apporter d’avantage des corrections, elle est néanmoins moins immédiate que les tables des corrections mises à disposition.
# Où trouver les variables département et commune ?
UNIVERS | TABLE | VARIABLE DÉPARTEMENT (str(3)) | VARIABLE COMMUNE (str(3)) | REMARQUES |
---|---|---|---|---|
SNIIRAM DCIR | Référentiel des bénéficiaires IR_BEN_R | BEN_RES_DPT | BEN_RES_COM | Dernière information disponible (table des prestations ou données administratives des caisses de sécurité sociale) |
Table prestations ER_PRS_F | BEN_RES_DPT | BEN_RES_COM | Information remontée au moment de la prestation | |
SNIIRAM DCIRS | Référentiel des bénéficiaires IR_IBA_R | BEN_RES_DPT | BEN_RES_COM | Dernière information disponible (table des prestations ou données administratives des caisses de sécurité sociale) |
Table prestations 'NS_PRS_F' | BEN_RES_DPT | BEN_RES_COM | Information remontée au moment de la prestation | |
Tables affinées 'NS_XXX_F]' | BEN_RES_DPT | BEN_RES_COM | Information remontée au moment de la prestation | |
PMSI MCO/SSR/HAD | Table séjour B T_MCOaa_B / T_SSRaa_B / T_HADaa_B | BDI_DEP | BDI_COD (str(5)) | |
Table actes et consultations externes des établissements publics T_MCOaa_FASTC / T_SSRaa_FASTC | BDI_DEP | BDI_COD (str(5)) | ||
Cartographie des pathologies | Table des individus Versions de la G4 à la G7: CT_IND_20aa_Gn / Versions à partir de la G8: CRTO_CT_IND_Gn_20aa | DPT | Non disponible | Code reconstitué à partir des informations du DCIR et du PMSI et corrigé si besoin |
Table de résidence Versions à partir de la G8: CRTO_CT_RES_Gn_20aa | CODE_DEPARTEMENT_INSEE | CODE_COMMUNE_INSEE (str(5)) | Il y a également les codes CANTON et REGION | |
Causes de décès | Table cause initiale de décès KI_CCI_R | BEN_RES_DPT | BEN_RES_COM | Les codes ont été transformés pour coller aux référentiels du SNIIRAM IR_DPT_V et IR_GEO_V |
# Construction de la localisation dans le PMSI
Pour travailler à un niveau départemental, la variable département BDI_DEP
s’utilise seule.
Différences par rapport au SNIIRAM :
- Les départements de Corse sont codés
2A
ou2B
- Les DOM sont codés
9A
,9B
,9C
,9D
et9F
Pour travailler à un niveau territorial plus fin, la variable commune BDI_COD
s’utilise également seule dans le PMSI (5 positions).
Elle donne le code géographique du lieu de résidence déclaré par le patient.
Le code géographique correspond au code postal, ou à un regroupement pour les codes postaux de moins de 1000 habitants.
L'ATIH met à disposition chaque année sur son site (opens new window) une table qui permet de passer des codes géographiques aux codes postaux.
# Construction de la localisation dans le SNIIRAM
# Construction du code département
La variable du département BEN_RES_DPT
peut généralement s’utiliser directement.
Il est cependant plus rigoureux de commencer par reconstituer le code Insee depcom
au niveau comunal (cf ci-dessous), puis d'en extraire le code département.
Cette méthode permet notamment de bien distinguer les DOM, et les deux départements de Corse.
Exemple de code SAS pour construire la variable departement dept
IF substr(depcom,1,2) in ("97","20") THEN dept=substr(depcom,1,3);
ELSE dept=substr(depcom,1,2);
Pour reconstituer le code département de la Corse (Corse-du-Sud 201
et Haute-Corse 202
),
il est également possible d'utiliser le département de l'organisme d'affiliation du bénéficiaire (substr(ORG_AFF_BEN,4,3))
.
Les deux départements de la Corse y sont en effet bien distingués pour le régime général, et pour les SLM.
# Construction du code commune Insee complet à 5 positions
Pour travailler au niveau communal dans le SNIIRAM, il faut reconstituer le code commune Insee complet à 5 positions.
Cette partie détaille la construction du code Insee pour un soin, c'est-à-dire pour une ligne du DCIR.
Elle ne spécifie pas de critère de décision pour savoir quelle information retenir si un bénéficiaire est associé à deux localisations différentes.
# Règles de construction
La construction du code Insee à 5 positions nécessite de combiner les variables département et commune. Cette combinaison a une règle générale, et des règles spécifiques pour les cas particuliers.
La règle générale consiste à extraire les deux derniers caractères du code département et les trois caractères du code commune.
Des règles spécifiques existent pour :
- La Corse (code département
209
) Combinaison des- 2 premiers caractères du code département
- 3 caractères du code commune
- Les DOM
- Pour les bénéficiaires du RG, le code département est
097
et la règle dominante fonctionne - Pour la MSA et le RSI, le code département est entre
971
et976
,- Pour la MSA, on applique la même règle que pour la Corse.
- Pour le RSI, on conserve les 3 caractères du code département et les 2 derniers caractères du code commune.
- Pour les bénéficiaires du RG, le code département est
# Code SAS pour construire depcom
Voici un exemple de code SAS pour construire la variable code Insee depcom
à 5 positions, à partir des variables BEN_RES_DPT
et BEN_RES_COM
.
/*Cas général*/
IF ben_res_dpt ne '209' and substr(ben_res_dpt,1,2) ne '97'
THEN depcom=compress(substr(ben_res_dpt,2,2)||ben_res_com);
/*Corse*/
ELSE IF ben_res_dpt = '209'
THEN depcom=compress(substr(ben_res_dpt,1,2)||ben_res_com);
/*DOM pour MSA*/
ELSE IF (regime='02A' and substr(ben_res_dpt,1,2)='97')
THEN depcom=compress(substr(ben_res_dpt,1,2)||ben_res_com);
/*DOM pour RSI*/
ELSE IF (regime='03A' and substr(ben_res_dpt,1,2)='97')
THEN depcom=compress(ben_res_dpt)||substr(ben_res_com,2,2);
/*DOM pour autre que MSA ou RSI*/
ELSE IF (substr(ben_res_dpt,1,2)='97')
THEN depcom=compress(substr(ben_res_dpt,1,2)||ben_res_com);
# Obtention du code INSEE en 2A et 2B pour la Corse en partant du code INSEE commencant par 20
Lorsque le code INSEE est obtenu à partir des variables BEN_RES_DPT
et BEN_RES_COM
il est possible d'obtenir le code INSEE actuel pour la Corse (commençant par 2A ou 2B) pour tous les bénéficiaires. Pour obtenir le nouveau code INSEE (l’ancien code INSEE était valable avant 1976) il faut utiliser le fichier des événements sur les communes de l'INSEE, disponible à cette page (opens new window) pour l'année 2019.
Il faudra ainsi fusionner la variable code INSEE avec la variable com_av
.
Le code INSEE actuel pour la Corse est donné par la variable com_ap
.
# Problèmes supplémentaires et corrections
D'autres problèmes existent, pour lesquels nous proposons des corrections, à appliquer dans l'ordre.
- Un certain nombre de codes communes et de codes départements sont manquants.
Les valeurs manquantes utilisées sont
000
,099
ou999
.
Correction : utiliser le département de l’organisme d’affiliation (substr(ORG_AFF_BEN,4,3))
.
- Les caisses utilisent parfois des codes Insee qui n'existent plus.
La nomenclature des codes communes évolue en effet régulièrement. Les caisses ont parfois du retard pour répercuter ces évolutions.
Correction : La table RFCOMMUN.CORRECTIONS_COM2012_NEW
permet de réattribuer les bons codes Insee.
Attention, cette table n'est pas exhaustive.
Il est possible de corriger toutes les codes communes qui n'existent plus grâce au fichier des événements sur les communes de l'INSEE et au fichier Hexaposte. L'utilisation du fichier des événements sur les communes de l'INSEE (celui arrèté au 1er janvier 2019 ce trouve ici (opens new window)), permet d'obtenir uniquement les communes qui existent à une date désirée. Il faut cependant préparer le fichier pour cet objectif, car le fichier contient beaucoup d’informations qui ne sont pas utiles pour ce travail. Le fichier Hexaposte (disponible à l'adresse suivante (opens new window) pour la version la plus récente) permet de corriger les codes communes qui correspondent en réalité à des hameaux. Pour ce faire il faut apparier les libellés aux codes communes grâce à la table ORAVAL.IR_GEO_V
, ensuite les libellés permettent de faire la jointure avec la variable Ligne_5
qui se trouve dans le fichier Hexaposte, la variable Code_commune_insee
donne le code commune actuel.
- Utilisation des codes postaux à la place des codes Insee
Correction : La table RFCOMMUN.T_FIN_GEO_LOC_FRANCE
, mise à disposition par l’ARS Ile-de-France, permet d'attribuer un code commune pour les codes qui ne correspondent pas à des codes communes de l'INSEE. Cependant certaines correspondances peuvent indiquer deux lieux assez eloignés. L'intérêt de cette table est donc surtout qu'elle est disponible sur le portail SNDS.
Le fichier Hexaposte offre une meilleure correction, car il permet de récupérer de façon exhaustive tous les codes INSEE associés à un code postal.
- Anomalies pour les bénéficiaires d’une SLM étudiante (code 617) : code département tronqué à deux caractères et compris entre
001
et009
Correction : utiliser le département de l’organisme d’affiliation (substr(ORG_AFF_BEN,4,3))
.
# Lien entre la localisation dans le PMSI et dans le SNIIRAM
La table PMSI_CORRESP, mise à disposition par l’ATIH, permet de passer des codes géographiques (PMSI) aux codes Insee (SNIIRAM).
Cette table est disponible sur le portail de la CNAM dans le répertoire rfcommun.
Il est possible de reconstituer cette table en croisant :
- la table donnant la correspondance entre le code postal et le code géographique du PMSI mise à disposition sur le site internet de l'ATIH (opens new window)
- une table donnant la correspondance entre le code postal et le code Insee disponible en open data à l'adresse suivante (opens new window).
Note
Lorsqu'un code géographique est associé à plusieurs codes postaux, une simple jointure sur `PMSI_CORRESP va générer des lignes en doublons.
# Construction du code région (SNIIRAM et PMSI)
Le programme ci-dessous permet d'associer aux codes départements reconstruits selon les méthodes citées précédemment (SNIIRAM ou PMSI) les codes des nouvelles régions correspondantes :
IF dept="01" THEN region="84-Auvergne-Rhône Alpes";
IF dept="02" THEN region="32- Hauts de France";
IF dept="03" THEN region="84-Auvergne-Rhône Alpes";
IF dept="04" THEN region="93-Provence Alpes Cote d'Azur";
IF dept="05" THEN region="93-Provence Alpes Cote d'Azur";
IF dept="06" THEN region="93-Provence Alpes Cote d'Azur";
IF dept="07" THEN region="84-Auvergne-Rhône Alpes";
IF dept="08" THEN region="44-Grand Est";
IF dept="09" THEN region="76-Occitanie";
IF dept="10" THEN region="44-Grand Est";
IF dept="11" THEN region="76-Occitanie";
IF dept="12" THEN region="76-Occitanie";
IF dept="13" THEN region="93-Provence Alpes Cote d'Azur";
IF dept="14" THEN region="28- Normandie";
IF dept="15" THEN region="84-Auvergne-Rhône Alpes";
IF dept="16" THEN region="75-Nouvelle Aquitaine";
IF dept="17" THEN region="75-Nouvelle Aquitaine";
IF dept="18" THEN region="24-Centre-Val de Loire";
IF dept="19" THEN region="75-Nouvelle Aquitaine";
IF dept="2A" THEN region="94-Corse";
IF dept="2B" THEN region="94-Corse";
IF dept="201" THEN region="94-Corse";
IF dept="202" THEN region="94-Corse";
IF dept="20" THEN region="94-Corse";
IF dept="21" THEN region="27- Bourgogne Franche Comté";
IF dept="22" THEN region="53-Bretagne";
IF dept="23" THEN region="75-Nouvelle Aquitaine";
IF dept="24" THEN region="75-Nouvelle Aquitaine";
IF dept="25" THEN region="27- Bourgogne Franche Comté";
IF dept="26" THEN region="84-Auvergne-Rhône Alpes";
IF dept="27" THEN region="28- Normandie";
IF dept="28" THEN region="24-Centre-Val de Loire";
IF dept="29" THEN region="53-Bretagne";
IF dept="30" THEN region="76-Occitanie";
IF dept="31" THEN region="76-Occitanie";
IF dept="32" THEN region="76-Occitanie";
IF dept="33" THEN region="75-Nouvelle Aquitaine";
IF dept="34" THEN region="76-Occitanie";
IF dept="35" THEN region="53-Bretagne";
IF dept="36" THEN region="24-Centre-Val de Loire";
IF dept="37" THEN region="24-Centre-Val de Loire";
IF dept="38" THEN region="84-Auvergne-Rhône Alpes";
IF dept="39" THEN region="27- Bourgogne Franche Comté";
IF dept="40" THEN region="75-Nouvelle Aquitaine";
IF dept="41" THEN region="24-Centre-Val de Loire";
IF dept="42" THEN region="84-Auvergne-Rhône Alpes";
IF dept="43" THEN region="84-Auvergne-Rhône Alpes";
IF dept="44" THEN region="52-Pays de Loire";
IF dept="45" THEN region="24-Centre-Val de Loire";
IF dept="46" THEN region="76-Occitanie";
IF dept="47" THEN region="75-Nouvelle Aquitaine";
IF dept="48" THEN region="76-Occitanie";
IF dept="49" THEN region="52-Pays de Loire";
IF dept="50" THEN region="28- Normandie";
IF dept="51" THEN region="44-Grand Est";
IF dept="52" THEN region="44-Grand Est";
IF dept="53" THEN region="52-Pays de Loire";
IF dept="54" THEN region="44-Grand Est";
IF dept="55" THEN region="44-Grand Est";
IF dept="56" THEN region="53-Bretagne";
IF dept="57" THEN region="44-Grand Est";
IF dept="58" THEN region="27- Bourgogne Franche Comté";
IF dept="59" THEN region="32- Hauts de France";
IF dept="60" THEN region="32- Hauts de France";
IF dept="61" THEN region="28- Normandie";
IF dept="62" THEN region="32- Hauts de France";
IF dept="63" THEN region="84-Auvergne-Rhône Alpes";
IF dept="64" THEN region="75-Nouvelle Aquitaine";
IF dept="65" THEN region="76-Occitanie";
IF dept="66" THEN region="76-Occitanie";
IF dept="67" THEN region="44-Grand Est";
IF dept="68" THEN region="44-Grand Est";
IF dept="69" THEN region="84-Auvergne-Rhône Alpes";
IF dept="70" THEN region="27- Bourgogne Franche Comté";
IF dept="71" THEN region="27- Bourgogne Franche Comté";
IF dept="72" THEN region="52-Pays de Loire";
IF dept="73" THEN region="84-Auvergne-Rhône Alpes";
IF dept="74" THEN region="84-Auvergne-Rhône Alpes";
IF dept="75" THEN region="11-Ile de France";
IF dept="76" THEN region="28- Normandie";
IF dept="77" THEN region="11-Ile de France";
IF dept="78" THEN region="11-Ile de France";
IF dept="79" THEN region="75-Nouvelle Aquitaine";
IF dept="80" THEN region="32- Hauts de France";
IF dept="81" THEN region="76-Occitanie";
IF dept="82" THEN region="76-Occitanie";
IF dept="83" THEN region="93-Provence Alpes Cote d'Azur";
IF dept="84" THEN region="93-Provence Alpes Cote d'Azur";
IF dept="85" THEN region="52-Pays de Loire";
IF dept="86" THEN region="75-Nouvelle Aquitaine";
IF dept="87" THEN region="75-Nouvelle Aquitaine";
IF dept="88" THEN region="44-Grand Est";
IF dept="89" THEN region="27- Bourgogne Franche Comté";
IF dept="90" THEN region="27- Bourgogne Franche Comté";
IF dept="91" THEN region="11-Ile de France";
IF dept="92" THEN region="11-Ile de France";
IF dept="93" THEN region="11-Ile de France";
IF dept="94" THEN region="11-Ile de France";
IF dept="95" THEN region="11-Ile de France";
IF dept="9A" THEN region="01-Guadeloupe";
IF dept="9B" THEN region="02-Martiniquee";
IF dept="9C" THEN region="03-Guyane";
IF dept="9D" THEN region="04-La Réunion";
IF dept="9F" THEN region="06-Mayotte";
IF dept="971" THEN region="01-Guadeloupe";
IF dept="972" THEN region="02-Martiniquee";
IF dept="973" THEN region="03-Guyane";
IF dept="974" THEN region="04-La Réunion";
IF dept="976" THEN region="06-Mayotte";