Que raconte le numéro d'assureur à travers ses 8 chiffres — lire le code de catégorie légale, le numéro de préfecture et le chiffre de contrôle depuis l'implémentation d'un logiciel de facturation médicale
· Go Komura · IT médical, ORCA, Numéro d'assureur, Système de facturation des soins, Relevé de soins, Gestion administrative médicale
Le numéro d’assureur imprimé sur la carte d’assurance maladie (aujourd’hui, sur l’écran d’information d’éligibilité de la carte Mynumber-assurance maladie). C’est un nombre à 8 chiffres (parfois 6) qui apparaît systématiquement dans la demande de remboursement des soins, mais peu d’ingénieurs savent sans doute que « ce numéro se lit, en réalité ». Les deux premiers chiffres indiquent le régime auquel on est affilié, les deux suivants la préfecture de l’assureur, et le dernier chiffre permet même de faire une vérification par le calcul — autrement dit, le numéro d’assureur n’est pas une simple suite de chiffres, c’est un code doté d’une structure.
Le quatrième article de la série ORCA dissèque, en guise de hors-série et avant l’article annoncé sur la vérification des relevés de soins, ce numéro d’assureur à lui seul. Nous traitons les quatre points suivants.
- La structure du numéro d’assureur — code de catégorie légale, numéro de préfecture, numéro particulier de l’assureur, chiffre de contrôle
- Le calcul manuel du chiffre de contrôle (check digit) et son implémentation COBOL dans ORCA
- La dérogation historique selon laquelle seule l’ancienne assurance maladie sous gestion gouvernementale (aujourd’hui Kyokai Kenpo) comptait « 4 chiffres »
- Le fait que les traces de cette dérogation sont encore vivantes dans le code source d’ORCA publié en 2026
Pour la partie réglementaire, la source primaire est les « Directives de définition des numéros d’assureur, des numéros de prise en charge par les fonds publics, des numéros de bénéficiaire des soins pris en charge par les fonds publics, ainsi que des codes d’établissement médical et de pharmacie » (ci-après les « directives de définition ») du ministère de la Santé, du Travail et des Affaires sociales. Pour la partie implémentation, comme dans les articles précédents, nous nous appuyons sur une lecture effective du code source de la série 5.2 de Nichi-Rece (instantané publié en juillet 2026), publié officiellement.
Public visé et les quatre termes utilisés dans cet article
Le public visé est constitué des ingénieurs qui développent ou interfacent des systèmes destinés aux établissements médicaux (systèmes de facturation des soins, dossiers médicaux électroniques, applications métier liées à l’accueil et à la facturation), ainsi que des responsables informatiques chargés de l’intégration des données médicales. Aucune connaissance pratique de la demande de remboursement des soins n’est présupposée. Il suffit de maîtriser les quatre termes suivants pour suivre l’article, qui se lit de façon autonome même sans avoir lu les trois précédents articles de la série.
| Terme | Sens |
|---|---|
| Relevé de soins (レセプト) | Relevé des honoraires de soins. Document par lequel un établissement médical récapitule les soins dispensés sur un mois et facture le coût à l’assureur, via un organisme d’examen et de paiement (Fonds de paiement des honoraires de soins de l’assurance sociale, ou fédérations d’assurance maladie nationale) |
| Système de facturation des soins (レセコン) | Système informatique chargé de constituer et de facturer les relevés de soins. Un logiciel distinct du dossier médical électronique, qui consigne les données cliniques |
| Nichi-Rece (日レセ) | Abréviation du « logiciel de facturation standard de l’Association médicale japonaise », fourni par l’Association médicale japonaise. C’est le système de facturation des soins au cœur du projet ORCA — le code source lu dans cet article est le sien |
| Assureur (保険者) | L’entité qui gère une assurance maladie publique : Kyokai Kenpo, caisse d’assurance maladie, municipalité (assurance maladie nationale), union à large échelle pour l’assurance médicale des personnes âgées de plus de 75 ans, etc. C’est cette unité qu’identifie le numéro d’assureur, sujet principal de cet article |
La relation entre le système de facturation des soins et le dossier médical électronique, ainsi que la vue d’ensemble d’ORCA elle-même, sont traitées dans le premier article de la série.
Table des matières
- La conclusion, d’abord — le numéro d’assureur se compose de « régime + zone géographique + série + vérification »
- Le code de catégorie légale — les deux premiers chiffres indiquent le régime
- Le numéro de préfecture et le numéro particulier de l’assureur — jusqu’à savoir de quel assureur il s’agit
- Le chiffre de contrôle — calculer à la main le modulus 10, pondération 2-1
- L’exception — le numéro d’assureur de l’ancien Seikan Kenpo comptait « 4 chiffres »
- Ce que le numéro d’assureur ne permet « pas » de savoir
- Comment ORCA l’implémente — deux tables maîtresses et un branchement selon le nombre de chiffres
- Points pratiques pour qui conçoit un système manipulant ce numéro
- Conclusion
- Références
1. La conclusion, d’abord — le numéro d’assureur se compose de « régime + zone géographique + série + vérification »
L’article 1 des directives de définition établit le numéro d’assureur comme suit.
| Position | Chiffres | Nom | Signification |
|---|---|---|---|
| 1er-2e chiffre | 2 | Code de catégorie légale | Catégorie du régime d’assurance maladie (Kyokai Kenpo, caisse d’assurance maladie, assurance médicale des personnes âgées de plus de 75 ans…) |
| 3e-4e chiffre | 2 | Numéro de préfecture | Préfecture où se situe l’assureur |
| 5e-7e chiffre | 3 | Numéro particulier de l’assureur | Numéro attribué à chaque assureur au sein du régime et de la préfecture |
| 8e chiffre | 1 | Chiffre de contrôle | Check digit (modulus 10, pondération 2-1) |
Une exception est toutefois inscrite dans la règle principale elle-même. Seule l’assurance maladie nationale (kokuho, hors assurance médicale des retraités) n’a pas de code de catégorie légale : elle totalise 6 chiffres, à savoir numéro de préfecture sur 2 chiffres + numéro particulier de l’assureur sur 3 chiffres + chiffre de contrôle sur 1 chiffre. Si le numéro d’assureur d’une carte compte 6 chiffres, cela suffit à savoir qu’il s’agit soit de l’assurance maladie nationale municipale, soit d’une union d’assurance maladie nationale.
En reprenant tel quel l’exemple des directives de définition, le numéro d’assureur 06130488 se lit ainsi.
06 13 048 8
│ │ │ └ chiffre de contrôle (calculé au chapitre 4)
│ │ └ numéro particulier de l'assureur : n° 048 au sein des caisses de Tokyo
│ └ numéro de préfecture : 13 = Tokyo
└ code de catégorie légale : 06 = assurance maladie gérée par une caisse
On sait ainsi, rien qu’avec le numéro et sans consulter aucune table maîtresse, qu’il s’agit d’« une caisse d’assurance maladie du département de Tokyo ». Les chapitres suivants examinent chaque composant l’un après l’autre.
2. Le code de catégorie légale — les deux premiers chiffres indiquent le régime
Le code de catégorie légale est défini par le tableau annexe 1(1) des directives de définition, « Tableau des codes de catégorie légale et des abréviations de régime ». En voici un extrait des principaux régimes d’assurance maladie.
| Code de catégorie légale | Régime | Abréviation |
|---|---|---|
| 01 | Kyokai Kenpo (assurance maladie gérée par l’Association nationale d’assurance maladie ; ex-assurance maladie sous gestion gouvernementale) | (協) |
| 02 | Assurance des marins | (船) |
| 03 / 04 | Assurance des assurés journaliers exceptionnels (soins ordinaires / frais de soins spéciaux) | (日) |
| 06 | Assurance maladie gérée par une caisse | (組) |
| 07 | Prestations de soins pour les membres des forces d’autodéfense, etc. | (自) |
| 31 à 34 | Caisses de mutuelle publique (fonctionnaires d’État / fonctionnaires territoriaux, etc. / police / écoles publiques et promotion de l’enseignement privé) | (共) |
| 39 | Assurance médicale des personnes âgées de plus de 75 ans | (高) |
| 63, 72 à 75 | Retraités par dérogation (caisses d’assurance maladie spécifiques / caisses de mutuelle spécifiques) | (退) |
| 67 | Assurance médicale des retraités relevant de la loi sur l’assurance maladie nationale | ─ |
| (aucun, 6 chiffres) | Assurance maladie nationale (hors assurance médicale des retraités) | ─ |
Il y a trois points pratiques à retenir pour la lecture.
- La destination du relevé de soins en dépend. Les relevés de l’assurance des salariés (01 à 34, 63, 72 à 75) sont soumis au Fonds de paiement des honoraires de soins de l’assurance sociale, tandis que ceux de l’assurance maladie nationale (6 chiffres et code de catégorie légale 67) et de l’assurance médicale des personnes âgées de plus de 75 ans (39) sont soumis aux fédérations d’assurance maladie nationale. La distinction entre « shaho » et « kokuho », que le monde de la demande de remboursement des soins utilise couramment, peut donc être déterminée mécaniquement en regardant simplement le début du numéro d’assureur.
- Il existe un numéro à 8 chiffres bien qu’il relève de la famille kokuho. L’assurance médicale des retraités de l’assurance maladie nationale (67) est, bien que relevant du régime kokuho, exceptionnellement à 8 chiffres avec code de catégorie légale. Une implémentation simplifiée du type « 6 chiffres = kokuho, 8 chiffres = shaho » trébuche précisément sur ce cas.
- « 1 assureur = 1 numéro » n’est pas toujours vrai. Comme l’indique la note du tableau annexe 1, 63 et 72 à 75 sont des codes de catégorie légale destinés aux assurés retraités par dérogation. Une même caisse d’assurance maladie peut ainsi détenir plusieurs numéros d’assureur : un numéro 06 pour ses assurés ordinaires et un numéro 63 pour ses assurés retraités par dérogation.
Notez qu’il existe un numéro à 8 chiffres qui ressemble beaucoup au numéro d’assureur : le numéro de prise en charge par les fonds publics (12 pour l’aide sociale, 21 pour les soins ambulatoires psychiatriques, etc.). Sa structure aussi est très proche — « code de catégorie légale sur 2 chiffres + préfecture sur 2 chiffres + organisme d’exécution sur 3 chiffres + contrôle sur 1 chiffre » — mais il s’agit d’un système distinct du numéro d’assureur de l’assurance maladie. Le relevé de soins prévoit d’ailleurs une case séparée pour ce numéro. Nous revenons sur ce point de confusion au chapitre 6.
3. Le numéro de préfecture et le numéro particulier de l’assureur — jusqu’à savoir de quel assureur il s’agit
Le numéro de préfecture sur les 3e et 4e chiffres est défini dans le tableau annexe 2 des directives de définition, de 01 (Hokkaido) à 47 (Okinawa). L’ordre correspond à celui des codes de préfecture (JIS) couramment utilisés : Tokyo est 13, Osaka est 27. Le critère étant le lieu d’implantation de l’assureur, même pour une entreprise dont les employés sont mutés dans tout le pays, si la caisse d’assurance maladie est basée à Tokyo, le numéro sera 13.
Le numéro particulier de l’assureur sur les 5e à 7e chiffres est un numéro attribué à chaque assureur au sein d’un même régime et d’une même préfecture. La circulaire précise même qui détermine ce numéro : selon les règles actuelles, pour Kyokai Kenpo, c’est le Bureau des assurances du ministère de la Santé, du Travail et des Affaires sociales, antenne préfectorale par antenne préfectorale ; pour les caisses d’assurance maladie, c’est le bureau régional des affaires sanitaires et sociales, caisse par caisse ; pour l’assurance maladie nationale, c’est la préfecture, municipalité par municipalité ou union par union ; pour l’assurance médicale des personnes âgées de plus de 75 ans, c’est l’union à large échelle correspondante ; et pour les caisses de mutuelle publique, c’est chaque administration de tutelle (à l’origine, en 1976, le directeur général de l’Agence des assurances sociales ou les gouverneurs de préfecture en étaient les responsables, mais cette compétence a été transférée aux organismes actuels au fil des réorganisations administratives).
Autrement dit, le numéro d’assureur n’est pas attribué de manière centralisée à l’échelle nationale, mais réparti à l’intérieur du cadre « régime × préfecture ». Extraire uniquement la partie séquentielle n’a pas de sens en soi : ce n’est qu’associée au code de catégorie légale et au numéro de préfecture qu’elle désigne un assureur de façon unique. Ce point concorde avec la conception des tables maîtresses d’ORCA que nous verrons plus loin (la clé de la table maîtresse des assureurs est le numéro d’assureur lui-même).
Notons au passage que Kyokai Kenpo ne constitue, en tant que personne morale, qu’une seule Association nationale d’assurance maladie, mais que le numéro d’assureur est attribué antenne préfectorale par antenne préfectorale (notification n° 0918001 de la Direction des assurances du 18 septembre 2008). C’est un bon exemple montrant que « l’unité identifiée par le numéro d’assureur » et « l’assureur en tant que personne morale » ne coïncident pas toujours.
4. Le chiffre de contrôle — calculer à la main le modulus 10, pondération 2-1
La méthode de calcul du chiffre de contrôle, ce dernier chiffre, est elle aussi décrite comme une procédure dans les directives de définition.
- Multiplier chaque chiffre, à l’exception du chiffre de contrôle, alternativement par 2 et par 1, en partant du dernier chiffre
- Calculer la somme des produits ; si un produit compte deux chiffres, le remplacer par la somme de son chiffre des dizaines et de son chiffre des unités
- Le chiffre de contrôle est la différence entre 10 et « le chiffre des unités de la somme obtenue à l’étape 2 » ; si ce chiffre des unités est 0, le chiffre de contrôle est 0
C’est ce qu’on appelle le modulus 10, pondération 2-1 (M10W21). Vérifions-le avec le 06130488 du chapitre 1. La cible est constituée des 7 chiffres 0613048, hors chiffre de contrôle, et les pondérations 2, 1, 2, 1… sont attribuées en partant du 8 à l’extrémité droite.
| Élément | 1er chiffre | 2e chiffre | 3e chiffre | 4e chiffre | 5e chiffre | 6e chiffre | 7e chiffre |
|---|---|---|---|---|---|---|---|
| Chiffre | 0 | 6 | 1 | 3 | 0 | 4 | 8 |
| Pondération (à partir de la droite) | 2 | 1 | 2 | 1 | 2 | 1 | 2 |
| Produit | 0 | 6 | 2 | 3 | 0 | 4 | 16 |
| Valeur ajoutée à la somme | 0 | 6 | 2 | 3 | 0 | 4 | 7 ← 1+6 |
La somme vaut 0+6+2+3+0+4+7 = 22. Le chiffre des unités étant 2, le chiffre de contrôle vaut 10 - 2 = 8, ce qui correspond bien au 8 final de 06130488 (le chiffre de contrôle n’est 0 que lorsque le chiffre des unités l’est déjà).
Ce calcul est d’ailleurs, dans les faits, identique à l’algorithme de Luhn, utilisé notamment pour le chiffre de contrôle des numéros de carte bancaire. Luhn s’explique en général ainsi : « on double un chiffre sur deux en partant de la droite, on soustrait 9 si le résultat doublé dépasse 9, et on choisit le dernier chiffre de façon que la somme totale soit un multiple de 10 ». Or, comme le produit ne dépasse jamais 18, « soustraire 9 » donne exactement le même résultat que « séparer les deux chiffres et les additionner ». Même sans connaître le nom M10W21, quiconque a déjà codé Luhn reconnaîtra qu’il s’agit du même code.
Codé, cela tient en quelques lignes.
def check_digit(code: str) -> int:
"""Calcule le chiffre de contrôle à partir de la suite de chiffres du numéro d'assureur, chiffre de contrôle exclu"""
total = 0
for i, ch in enumerate(reversed(code)):
n = int(ch) * (2 if i % 2 == 0 else 1)
total += n // 10 + n % 10
return (10 - total % 10) % 10
assert check_digit("0613048") == 8
Comme les applications métier du secteur médical sont souvent écrites en C# ou en COBOL, voici également une version C# (une syntaxe qui passe telle quelle aussi bien sous .NET Framework 4.x que sous .NET 8).
// Calcule le chiffre de contrôle à partir de la suite de chiffres, chiffre de contrôle exclu
public static int CheckDigit(string code)
{
int total = 0;
for (int i = 0; i < code.Length; i++)
{
// Applique les pondérations 2,1,2,1… en partant de la droite
int digit = code[code.Length - 1 - i] - '0';
if (digit < 0 || digit > 9)
{
throw new ArgumentException("Contient des caractères non numériques", nameof(code));
}
int n = digit * ((i % 2 == 0) ? 2 : 1);
total += n / 10 + n % 10; // Si le produit a deux chiffres, les séparer et les additionner
}
return (10 - total % 10) % 10;
}
// Vérifie le dernier chiffre d'un numéro d'assureur (6 chiffres pour le kokuho / 8 chiffres).
// L'ancien numéro à 4 chiffres du régime gouvernemental n'a pas de chiffre de contrôle,
// il est donc hors du champ de cette fonction (chapitre 5)
public static bool IsValidInsurerNumber(string number)
{
if (string.IsNullOrEmpty(number)) { return false; }
if (number.Length != 6 && number.Length != 8) { return false; }
// On examine d'abord tous les chiffres. Se contenter de vérifier le seul
// dernier chiffre laisserait une entrée contenant un caractère non numérique
// au milieu atteindre CheckDigit, qui renverrait alors une ArgumentException
// au lieu de false. Comme cette fonction reçoit des entrées issues d'OCR,
// de code-barres ou de saisie manuelle, elle doit impérativement renvoyer un bool
foreach (char c in number)
{
if (c < '0' || c > '9') { return false; }
}
int check = number[number.Length - 1] - '0';
return CheckDigit(number.Substring(0, number.Length - 1)) == check;
}
// CheckDigit("0613048") == 8 / IsValidInsurerNumber("06130488") == true
Voici maintenant un piège d’implémentation. La pondération « 2, 1, 2, 1… » est définie à partir de l’extrémité droite. En réalité, pour ce qui concerne spécifiquement le numéro d’assureur, la suite de chiffres à vérifier compte 7 chiffres (numéro à 8 chiffres) ou 5 chiffres (numéro à 6 chiffres du kokuho), soit un nombre impair — de sorte que multiplier par 2, 1, 2, 1… en partant de la gauche aboutit à la même attribution (car pour une longueur impaire, la séquence des pondérations est symétrique). Le danger survient au moment où l’on réutilise cette routine pour un numéro à un nombre pair de chiffres. Le numéro de bénéficiaire de l’aide médicale publique, par exemple, se compose d’une catégorie de bénéficiaire sur 6 chiffres et d’un chiffre de contrôle sur 1 chiffre, ce qui donne une cible de vérification à 6 chiffres, un nombre pair. Une implémentation écrite en partant de la gauche voit alors toutes les pondérations décalées d’un cran et renvoie une valeur différente. C’est un défaut pernicieux, impossible à détecter tant qu’on ne teste qu’avec des numéros d’assureur.
Fait intéressant, le code source d’ORCA conserve précisément la trace de ce piège. Le sous-programme commun qui prend en charge à lui seul le calcul et la vérification du chiffre de contrôle, cobol/common/ORCSCHKDGT.CBL (nom de composant « Calcul du chiffre de contrôle (vérification) »), est une routine générique qui reçoit des numéros allant jusqu’à 20 chiffres, sans se limiter au numéro d’assureur. Or son historique de modifications contient ceci.
* Historique des modifications du programme
* Maj/Min/Rev Modifié par Date Contenu
* 01.00.01 MCC-Ota 01/04/17 Effectuer le calcul arithmétique à partir de l'extrémité droite
Quatre mois après sa création en décembre 2000, une modification est intervenue en avril 2001, indiquant « effectuer le calcul arithmétique à partir de l’extrémité droite » — et en lisant l’ancien code laissé en commentaire, on comprend que la première version multipliait les pondérations en partant de la gauche. Comme indiqué plus haut, pour un numéro d’assureur à un nombre impair de chiffres, partir de la gauche produit par coïncidence le même résultat, si bien que cette erreur ne se révèle qu’en vérifiant un numéro à un nombre pair de chiffres. Le code corrigé place l’index de l’extrémité droite de la suite de chiffres dans IDY, décrémente IDY tout en appliquant les pondérations depuis la droite, décompose tout produit à deux chiffres en WRK-CD2-1 + WRK-CD2-2 pour les additionner, puis renvoie finalement 10 - (somme mod 10) — une implémentation qui suit exactement la procédure des directives de définition. Une seule ligne d’historique de modification vieille de 25 ans continue ainsi de servir d’avertissement : écrivez le chiffre de contrôle en partant de la droite, et ne vous laissez pas rassurer par de simples tests sur des nombres impairs de chiffres.
5. L’exception — le numéro d’assureur de l’ancien Seikan Kenpo comptait « 4 chiffres »
Tout ce qui précède constitue la règle générale. Et le numéro d’assureur a connu, dans son histoire, l’exception la plus importante de toutes. L’article 1, paragraphe 7 des directives de définition énonce ceci.
Dérogation concernant le numéro d’assureur de l’assurance maladie sous gestion gouvernementale (à l’exclusion de l’assurance des assurés journaliers exceptionnels) Pour le numéro d’assureur de l’assurance maladie sous gestion gouvernementale (…), pour le moment, nonobstant les paragraphes 1 et 3 ci-dessus, on retiendra comme numéro d’assureur un numéro à 4 chiffres combinant le numéro de préfecture sur 2 chiffres et le numéro particulier de l’assureur (municipalité) sur 2 chiffres ; le numéro de préfecture est alors, dans ce cas, celui fixé au tableau annexe 3 pour la préfecture où se situe le bureau des assurances sociales.
L’assurance maladie sous gestion gouvernementale (Seikan Kenpo), l’ancêtre de Kyokai Kenpo, était le régime auquel adhéraient les employés de petites et moyennes entreprises — l’un des plus grands régimes du pays par le nombre d’adhérents. Et le numéro d’assureur de ce régime, le plus vaste de tous, était :
- 4 chiffres et non 8 (pas de code de catégorie légale, et pas de chiffre de contrôle non plus)
- Un numéro de préfecture provenant non pas du tableau annexe 2 habituel, mais d’un tableau annexe 3 dédié
- Numéroté bureau des assurances sociales par bureau, alors que l’assureur était un corps unique (l’État)
— une triple dérogation. Les numéros du tableau annexe 3 ne ressemblent en rien à ceux du tableau habituel.
| Préfecture | Numéro de préfecture habituel (tableau annexe 2) | Spécifique au Seikan Kenpo (tableau annexe 3) |
|---|---|---|
| Tokyo | 13 | 21 |
| Kanagawa | 14 | 31 |
| Aichi | 23 | 51 |
| Osaka | 27 | 41 |
| Fukuoka | 40 | 75 |
| Okinawa | 47 | 82 |
Cette dérogation, censée n’être valable « pour le moment », a duré plusieurs décennies, et n’a finalement été levée qu’avec la création de l’Association nationale d’assurance maladie (Kyokai Kenpo) le 1er octobre 2008. Dans les directives actuelles (la version en vigueur de la circulaire de 1976), le numéro d’assureur de Kyokai Kenpo est défini comme un numéro à 8 chiffres attribué par antenne préfectorale (notification n° 0918001 de la Direction des assurances précitée). Le code de catégorie légale reste 01, comme à l’époque du Seikan Kenpo.
Les traces du « Seikan » qui subsistent dans le code source d’ORCA
Sur le plan réglementaire, cette histoire s’est achevée en 2008, mais un système de facturation des soins continue de traiter d’anciennes données. Dans le code source de la série 5.2 d’ORCA publié en 2026, les traces de l’époque des 4 chiffres du Seikan Kenpo restent aujourd’hui encore bel et bien vivantes.
1. Le branchement qui déduit le régime à partir du nombre de chiffres. Le sous-programme de vérification de la saisie de l’assurance à l’enregistrement du patient, cobol/orca12/ORCSP03A.CBL, limite d’abord le nombre de chiffres du numéro d’assureur saisi à 4, 6 ou 8 (toute autre valeur est une erreur), puis, pour un numéro non enregistré dans la table maîtresse des assureurs, déduit le régime (le « numéro d’assurance » interne à ORCA) à partir du nombre de chiffres.
* Édition selon la catégorie légale
EVALUATE WRK-MOJ-MAX
WHEN 4
* Gestion gouvernementale
MOVE "001" TO WRK-HKNJA-HKNNUM
WHEN 6
* Kokuho
MOVE "060" TO WRK-HKNJA-HKNNUM
WHEN 8
* Autres
PERFORM 1003-HKNNUM-HBTNUM-SEC
END-EVALUATE
4 chiffres signifie Seikan (code interne 001), 6 chiffres signifie kokuho (060), 8 chiffres signifie rechercher la table maîtresse par le code de catégorie légale sur les 2 premiers chiffres. Le savoir sur le système de numérotation des chapitres 1 à 3 devient ainsi tel quel un branchement COBOL. Et comme le numéro à 4 chiffres du Seikan n’a pas de chiffre de contrôle, la vérification modulus 10 qui le précède immédiatement ne s’exécute que « quand le nombre de chiffres dépasse 4 ». La dérogation se propage jusque dans la logique de vérification.
2. La réinterprétation entre Seikan et Kyokai. Le côté migration et import des données comporte lui aussi un traitement. Le lot d’import des informations d’assurance du patient, cobol/orcabt/ORCVTPTHKNINF.CBL, contient :
* Prise en charge de Kyokai Kenpo
IF PTHKN-HKNNUM = "001"
* Si le régime est Seikan mais le numéro d'assureur compte 8 chiffres, le considérer comme Kyokai
IF WRK-LEN = 8
MOVE "009" TO PTHKN-HKNNUM
END-IF
END-IF
— autrement dit, un traitement qui « réinterprète en Kyokai Kenpo (009) tout enregistrement entré comme Seikan (001) dont le numéro d’assureur compte 8 chiffres ». En interne, l’ancien Seikan et l’actuel Kyokai Kenpo coexistent comme deux numéros d’assurance distincts, et le nombre de chiffres sert d’indice pour distinguer l’ancien du nouveau. Côté agrégation des relevés de soins, cobol/orcabt/ORCBG014.CBL regroupe 001 et 009 dans une même catégorie, avec un commentaire indiquant que « le Seikan devient le Kyokai ».
3. La réécriture du nom affiché. Le cas le plus emblématique est la routine commune d’édition du nom de l’assurance, cobol/common/ORCSHKNMEI.CBL.
01 CONST-H201001 PIC X(08) VALUE "20081001".
...
IF ( ORCSHKNMEI-SRYYMD >= CONST-H201001 )
AND ( COMB-HKNNUM = "001" )
INSPECT COMB-SYU-TANSEIDONAME
REPLACING ALL "政管" BY "協会"
END-IF
La date de lancement de Kyokai Kenpo, 20081001, est intégrée comme constante, et si la date de soins lui est postérieure ou égale, la chaîne « 政管 » (Seikan) contenue dans le nom abrégé du régime est remplacée par « 協会 » (Kyokai). Le nom dans la table maîtresse reste l’ancien ; seul l’affichage bascule selon la date de soins — pour des soins antérieurs ou égaux au 30 septembre 2008, l’affichage reste aujourd’hui encore « 政管 ». L’histoire du régime se trouve ainsi reproduite à l’exécution par une simple substitution de chaîne de caractères.
6. Ce que le numéro d’assureur ne permet « pas » de savoir
Après avoir suivi « jusqu’où on peut savoir », traçons aussi la limite : ce que le numéro d’assureur ne permet pas de savoir.
- On ne peut pas identifier un individu. Le numéro d’assureur ne désigne que l’assureur (en tant qu’unité). L’identification de l’individu relève du symbole et du numéro de la carte d’assuré (ainsi que du numéro de branche sur 2 chiffres ajouté lors du passage à l’identification individuelle de la confirmation d’éligibilité en ligne). Dans la confirmation d’éligibilité en ligne vue la dernière fois, les conditions d’interrogation formaient elles aussi la combinaison numéro d’assureur + symbole et numéro + numéro de branche.
- Le taux de participation aux frais n’est pas déterminé. Le code de catégorie légale indique le régime, mais le montant à payer au guichet varie selon l’âge et la tranche de revenu. Un raccourci du type « 39, donc 10 % » est à proscrire : le taux de participation se détermine à partir du résultat de la confirmation d’éligibilité (carte de bénéficiaire âgé, informations de certification du plafond de reste à charge, etc.).
- Le nom et les coordonnées de l’assureur n’en ressortent pas. Le numéro permet de savoir jusqu’à « la caisse n° 048 parmi les caisses d’assurance maladie de Tokyo », mais on ne sait de quelle caisse il s’agit qu’en le rapprochant de la table maîtresse des assureurs. Le système de numérotation ne fournit qu’une clé de recherche.
- Un monde à part du numéro de prise en charge par les fonds publics. Les numéros à 8 chiffres tels que ceux de l’aide sociale (code de catégorie légale 12) ou des soins de soutien à l’autonomie (21) sont des numéros de prise en charge par les fonds publics, attribués à partir d’un tableau distinct de celui des codes de catégorie légale du numéro d’assureur. Comme la structure est identique — « 8 chiffres : catégorie légale sur 2 chiffres + préfecture sur 2 chiffres + 3 chiffres + contrôle sur 1 chiffre » —, les confondre en ne regardant que le format expose à des erreurs. Sur le relevé de soins également, assurance et fonds publics figurent dans des cases distinctes.
7. Comment ORCA l’implémente — deux tables maîtresses et un branchement selon le nombre de chiffres
Détaillons la conception des données autour du numéro d’assureur chez ORCA, qui sous-tend le branchement vu au chapitre 5. Deux tables maîtresses interviennent principalement.
La table maîtresse des numéros d’assurance tbl_hknnum constitue la couche « régime ». Les régimes sont identifiés par un code interne à 3 chiffres, le « numéro d’assurance » (001 = Seikan, 009 = Kyokai Kenpo, 060 = kokuho, 039 = personnes âgées de plus de 75 ans…). La clé primaire réelle, cependant, n’est pas le numéro d’assurance seul, mais une clé composite incluant le numéro d’établissement médical, la date de début d’application et une classification (HOSPNUM, HKNNUM, TEKSTYMD, PAYKBN) — une structure qui permet de superposer, pour un même régime, des générations d’enregistrements par période d’application : ainsi, même quand un attribut comme le taux de participation change avec une révision réglementaire, on peut le résoudre par période. La définition (record/tbl_hknnum.db) contient le code de catégorie légale HBTNUM, le nom du régime SEIDONAME / son nom abrégé TANSEIDONAME, ainsi que des champs de taux de participation et de plafond pour chaque combinaison assuré principal/ayant droit × hospitalisation/consultation externe. Trois codes de contrôle retiennent l’attention.
HBTNUMCHKKBN— code de contrôle du code de catégorie légaleKENSNUMCHKKBN— code de contrôle du chiffre de contrôle (du numéro de payeur)JKYSKENSNUMCHKKBN— code de contrôle du chiffre de contrôle du numéro de bénéficiaire
Autrement dit, le fait d’appliquer ou non la vérification du numéro est un paramètre de la table maîtresse propre à chaque régime. De fait, en lisant le sous-programme de vérification de la saisie des fonds publics cobol/orca12/ORCSP03B.CBL, on constate que la vérification modulus 10 du numéro de payeur n’est exécutée que lorsque KENSNUMCHKKBN = "1", et que pour le numéro de bénéficiaire, une classification "3" le traite comme un avertissement plutôt qu’une erreur (on peut le confirmer et passer outre). Les numéros de bénéficiaire de l’aide médicale publique mélangent, selon les collectivités, des systèmes sans chiffre de contrôle, d’où l’intérêt de pouvoir ajuster par la donnée la rigueur de la vérification. Cette conception, qui renvoie la validation vers la table maîtresse plutôt que de l’écrire en dur dans le code, peut être qualifiée de sagesse d’un système de facturation des soins qui compose depuis vingt-cinq ans avec la diversité des régimes.
La table maîtresse des assureurs tbl_hknjainf constitue la couche « assureur ». Sa clé est le numéro d’établissement médical plus le numéro d’assureur lui-même, et elle contient le nom de l’assureur, le code postal, l’adresse, le numéro de téléphone, le symbole de la carte d’assuré, ainsi que le régime d’appartenance (le numéro d’assurance) (record/tbl_hknjainf.db). L’ordre de traitement d’ORCSP03A.CBL vu au chapitre 5 présuppose cette structure à deux couches.
- Si le nombre de chiffres du numéro d’assureur n’est ni 4, ni 6, ni 8, erreur immédiate
- Rechercher d’abord dans la table maîtresse des assureurs (
tbl_hknjainf). Si le numéro y est enregistré, le nom, l’adresse, le taux de prestation et le régime sont tous déterminés - S’il n’est pas enregistré, vérifier par modulus 10, uniquement au-delà de 4 chiffres (appel de
ORCSCHKDGT) - Déduire le régime à partir du nombre de chiffres et du code de catégorie légale (4 chiffres → Seikan, 6 chiffres → kokuho, 8 chiffres → rechercher dans
tbl_hknnumpar le code de catégorie légale)
Autrement dit, « ce que l’on peut déduire du système de numérotation » n’est qu’un repli utilisé en l’absence d’enregistrement, et l’ordre de priorité veut que la référence, c’est toujours la table maîtresse. Ce dispositif à deux étages est la réponse, côté implémentation, à la limite énoncée au chapitre 6 : « le numéro ne permet pas de connaître le nom ».
Notons au passage que le champ qui contient le numéro d’assureur, HKNJANUM, est de type PIC X(08) — défini non pas comme un type numérique mais comme une chaîne de caractères de 8 positions — et il est référencé par plus de 650 sources COBOL. Ce choix de type évite d’emblée le piège signalé au chapitre suivant : conserver en type numérique un numéro dont le premier chiffre est 0 (comme ceux des catégories légales 01 à 07) fait perdre ce zéro initial.
8. Points pratiques pour qui conçoit un système manipulant ce numéro
Voici une synthèse des points clés pour concevoir et implémenter un système qui manipule le numéro d’assureur (et le numéro de prise en charge par les fonds publics, de structure identique).
- Le conserver en chaîne de caractères, jamais en nombre. Les numéros des catégories légales 01 à 07 commencent par 0. Perdre ce zéro initial dès le passage par Excel, et se retrouver avec 7 chiffres, est un problème classique de l’intégration de données médicales. Côté import CSV, prévoyez une détection et un rejet — ou au moins un avertissement — pour tout « numéro comptant trop peu de chiffres ».
- Supposer trois nombres de chiffres possibles : 4, 6 et 8. Les nouvelles données actuelles comptent 6 chiffres (kokuho) ou 8, mais les données anciennes peuvent contenir les numéros à 4 chiffres de l’ancien Seikan (chapitre 5). Le fait qu’ORCA accepte encore aujourd’hui les 4 chiffres est un égard envers cette histoire. Normaliser sans précaution en « 8 chiffres fixes, complétés par des zéros » provoquera des incohérences lors du rapprochement avec d’anciennes données ou d’autres systèmes.
- N’appliquer la vérification du chiffre de contrôle qu’aux numéros qui en possèdent un. Le calcul M10W21 est puissant, mais l’ancien numéro à 4 chiffres du Seikan n’a pas de chiffre de contrôle, et certains systèmes de numéro de bénéficiaire de l’aide médicale publique n’en ont pas non plus. Comme le fait ORCA, l’approche la plus efficace consiste à renvoyer vers un paramètre de la table maîtresse la décision de « quels numéros vérifier », et à distinguer avertissement et erreur.
- Rendre le branchement sur le code de catégorie légale piloté par une table maîtresse. Si vous utilisez le code de catégorie légale pour déterminer, par exemple, la destination du relevé de soins (Fonds de paiement ou fédération d’assurance maladie nationale), ne codez pas en dur la correspondance code de catégorie légale → régime : placez-la dans une table maîtresse. Le code de catégorie légale a une histoire d’ajouts au fil des réformes réglementaires, et pourrait encore s’enrichir à l’avenir.
- Ne jamais mettre le numéro d’assureur et le numéro de prise en charge par les fonds publics dans la même colonne. Même structure, mais systèmes distincts (chapitre 6). Conservez-les comme des champs séparés dans le modèle de données également, et incluez « le type de numéro » dans toute clé de rapprochement.
- Le numéro d’assureur reste en activité à l’ère de la confirmation d’éligibilité en ligne. La transition vers la carte Mynumber-assurance maladie réduit les occasions de manipuler directement le symbole et le numéro, mais
InsurerNumber(le numéro d’assureur) figure toujours bel et bien dans le XML de requête et de réponse de la confirmation d’éligibilité en ligne, et la détermination de la destination du relevé de soins reste elle aussi fondée sur le numéro d’assureur. Concevez vos systèmes en partant du principe que ce n’est pas « un numéro appelé à disparaître un jour », mais qu’il restera une clé fondamentale de l’information d’éligibilité.
9. Conclusion
- Le numéro d’assureur compte 8 chiffres : code de catégorie légale sur 2 chiffres + numéro de préfecture sur 2 chiffres + numéro particulier de l’assureur sur 3 chiffres + chiffre de contrôle sur 1 chiffre (seul le kokuho fait exception, avec 6 chiffres et sans catégorie légale). Les deux premiers chiffres indiquent le régime et la destination du relevé de soins (Fonds de paiement ou fédération d’assurance maladie nationale) ; les deux suivants, la préfecture de l’assureur.
- Le chiffre de contrôle final utilise le modulus 10, pondération 2-1. Les pondérations partent de l’extrémité droite ; pour un numéro d’assureur à un nombre impair de chiffres, une implémentation erronée partant de la gauche coïncide par hasard, mais échoue si on la réutilise pour un numéro à un nombre pair de chiffres (comme le numéro de bénéficiaire de l’aide médicale publique). Le sous-programme commun d’ORCA,
ORCSCHKDGT.CBL, conserve encore l’historique de la modification de 2001 : « effectuer le calcul arithmétique à partir de l’extrémité droite ». - La plus grande exception fut l’ancienne assurance maladie sous gestion gouvernementale. Restée « pour le moment » pendant des décennies, elle a fonctionné avec un numéro à 4 chiffres utilisant un tableau de numéros de préfecture dédié (ni code de catégorie légale ni chiffre de contrôle), avant de passer à 8 chiffres avec la création de Kyokai Kenpo en octobre 2008.
- Le code source d’ORCA conserve les traces de cette dérogation, encore actives en 2026 : un branchement qui déduit le Seikan à partir de 4 chiffres, un traitement d’import qui réinterprète 8 chiffres en Kyokai Kenpo, et un traitement qui remplace « 政管 » par « 協会 » dans le nom affiché lorsque la date de soins est postérieure ou égale au 1er octobre 2008.
- Ce que le numéro permet de savoir s’arrête à l’unité de l’assureur. L’individu, le taux de participation et le nom de l’assureur restent inconnus. Conserver l’implémentation sur deux couches — table maîtresse des régimes et table maîtresse des assureurs — et cantonner la déduction à partir du système de numérotation à un simple repli en cas de non-enregistrement, c’est la manière ORCA, et elle se généralise à tout système manipulant des numéros structurés.
Le prochain article de la série portera, comme initialement annoncé, sur la logique de vérification et d’évaluation des relevés de soins. Nous y disséquerons, à nouveau à partir du code source et des documents publics, ce que vérifient respectivement le contrôle des données au sein de l’établissement médical et le contrôle informatique effectué du côté de l’organisme d’examen et de paiement.
10. Références
- Directives de définition des numéros d’assureur, des numéros de prise en charge par les fonds publics, des numéros de bénéficiaire des soins pris en charge par les fonds publics, ainsi que des codes d’établissement médical et de pharmacie (ministère de la Santé, du Travail et des Affaires sociales, version de mars 2008, annexe 2, PDF) — source de la structure décrite dans cet article, de la procédure de calcul du chiffre de contrôle, du tableau des codes de catégorie légale (tableau annexe 1), du tableau des numéros de préfecture (tableau annexe 2), ainsi que de la dérogation Seikan (article 1, paragraphe 7) et de son tableau de numéros dédié (tableau annexe 3)
- À propos de la définition des numéros d’assureur et questions connexes (notification n° 34 de l’Agence des assurances / notification n° 45 du Bureau des assurances du 7 août 1976, version en vigueur) — la disposition en vigueur faisant du numéro d’assureur de Kyokai Kenpo un numéro par antenne préfectorale (notification n° 0918001 de la Direction des assurances du 18 septembre 2008)
- À propos du numéro d’assureur - Kyokai Kenpo (Association nationale d’assurance maladie) — la liste des numéros d’assureur actuels par antenne préfectorale
- Code source principal de Nichi-Rece, série 5.2 (instantané publié en juillet 2026) :
cobol/common/ORCSCHKDGT.CBL/cobol/orca12/ORCSP03A.CBL/cobol/orca12/ORCSP03B.CBL/cobol/common/ORCSHKNMEI.CBL/cobol/orcabt/ORCVTPTHKNINF.CBL/cobol/orcabt/ORCBG014.CBL/record/tbl_hknnum.db/record/tbl_hknjainf.dbet autres — toutes les descriptions d’implémentation, d’historiques de modification et de définitions de table dans cet article s’appuient sur cet instantané
Articles associés
Articles récents partageant les mêmes étiquettes, pour approfondir des sujets proches.
Que se passe-t-il quand on présente sa carte Mynumber-assurance maladie ? Lire, depuis le code source d'ORCA, l'articulation entre la confirmation d'éligibilité en ligne et le système de facturation des soins
De la présentation de la carte Mynumber-assurance maladie jusqu'à l'enregistrement des droits dans le système de facturation : explicatio...
Ce que l'ordonnance électronique change pour le système de facturation médicale ── Lire le support de l'ordonnance électronique d'ORCA à travers son code source
Ce dont a besoin un système de facturation médicale pour l'ordonnance électronique. Cet article explique, à partir de mesures réelles eff...
Où se produisent la minoration et le renvoi des relevés de soins — décomposer la logique du contrôle des relevés à partir du code source d'ORCA et de documents publics
Où se produisent la minoration et le renvoi des relevés de soins ? Cet article explique, à partir de sources et de documents publics, la ...
Comprendre le panorama complet de l'API 日レセ à partir du code source ── Lire les sources publiques d'ORCA (avec un tableau de correspondance des 137 points de terminaison)
Nous dressons le panorama complet de l'API 日レセ à partir du code source public d'ORCA (日医標準レセプトソフト). Cet article couvre le tableau de corr...
ORCA (Nichirese) n'est pas un dossier médical électronique — Le logiciel de facturation médicale et l'architecture des systèmes de santé, vus par un ingénieur
ORCA (Nichirese) n'est pas un dossier médical électronique mais un logiciel de facturation médicale. Ce guide, du point de vue d'un ingén...
Sujets associés
Ces pages replacent le sujet dans un contexte plus large de services et de décisions.
Thèmes techniques Windows
Portail des sujets sur le développement Windows, l'analyse des incidents et la valorisation des actifs existants.
Services liés à ce sujet
Cet article est directement lié aux services suivants.
Conseil technique et revue de conception
La conception de systèmes de codes métier comme le numéro d'assureur ou le numéro de prise en charge par les fonds publics, ainsi que la clarification d'une politique de validation, sont un thème classique du conseil technique et de la revue de conception pour les systèmes métier, bien au-delà du seul secteur médical.
Développement d'applications Windows
Les applications métier liées à l'accueil et à la facturation — y compris la vérification de saisie du numéro d'assureur et le rapprochement avec les tables maîtresses — fonctionnent souvent sur des postes Windows internes à l'établissement ou à l'entreprise, ce qui relève du développement d'applications Windows.
Questions fréquentes
Questions souvent posées lors d’une consultation sur le sujet de cet article.
- Le numéro d'assureur permet-il d'identifier une personne ?
- Non. Ce que le numéro d'assureur identifie, c'est uniquement « quel assureur » (telle antenne préfectorale de Kyokai Kenpo, telle caisse d'assurance maladie, l'assurance maladie nationale de telle municipalité, etc.). L'identification de l'individu relève du symbole et du numéro inscrits sur la carte d'assuré (y compris le numéro de branche sur 2 chiffres ajouté lors du passage à l'identification individuelle de la confirmation d'éligibilité en ligne), qui constitue un champ distinct du numéro d'assureur.
- Pourquoi certaines cartes d'assurance ont-elles un numéro d'assureur à 6 chiffres et d'autres à 8 chiffres ?
- Parce que seule l'assurance maladie nationale (kokuho, hors assurance médicale des retraités) est définie comme n'ayant pas de code de catégorie légale, ce qui donne 6 chiffres (numéro de préfecture sur 2 chiffres + numéro particulier de l'assureur sur 3 chiffres + chiffre de contrôle sur 1 chiffre). L'assurance des salariés (Kyokai Kenpo, caisses d'assurance maladie d'entreprise, caisses de mutuelle publique, etc.), l'assurance médicale des personnes âgées de plus de 75 ans, ainsi que l'assurance médicale des retraités du régime de l'assurance maladie nationale (code de catégorie légale 67), comportent 8 chiffres, avec un code de catégorie légale sur 2 chiffres en tête.
- À quoi correspond le dernier chiffre du numéro d'assureur ?
- C'est le chiffre de contrôle (check digit). On multiplie chaque chiffre, sauf le dernier, par 2, 1, 2, 1… en partant de la droite ; si le produit obtient deux chiffres, on les sépare et on les additionne l'un à l'autre ; le chiffre de contrôle est alors le nombre obtenu en soustrayant de 10 le chiffre des unités de cette somme (ou 0 si ce chiffre des unités est déjà 0). C'est ce qu'on appelle la méthode modulus 10, pondération 2-1, et ce seul chiffre permet de détecter la plupart des erreurs de saisie.
- Est-il vrai que le numéro d'assureur de l'ancien Kyokai Kenpo (assurance maladie sous gestion gouvernementale) comptait autrefois 4 chiffres ?
- C'est vrai. Les directives du ministère de la Santé, du Travail et des Affaires sociales précisaient explicitement une dérogation : « le numéro d'assureur de l'assurance maladie sous gestion gouvernementale sera, pour le moment, composé au total de 4 chiffres : numéro de préfecture sur 2 chiffres + numéro particulier de l'assureur sur 2 chiffres ». Le numéro de préfecture utilisait de surcroît un tableau dédié, distinct du tableau habituel (Tokyo = 21, Osaka = 41, etc.). Avec la création de Kyokai Kenpo en octobre 2008, ce système a été remplacé par un numéro à 8 chiffres propre à chaque antenne préfectorale.
Profil de l’auteur
Page de présentation de l’auteur de l’article.
Go Komura
Représentant de KomuraSoft LLC
Spécialisé dans le développement de logiciels Windows, le conseil technique et l’analyse de pannes, notamment pour les systèmes existants et les incidents difficiles à reproduire.