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)
· Go Komura · IT médical, ORCA, Intégration API, COBOL, Lecture de code source
L’article précédent a passé en revue le fait qu’ORCA (日医標準レセプトソフト) est un système de facturation médicale (レセコン), et que son code source est publié en continu depuis plus de vingt ans.
Cette fois, nous allons réellement lire ce code source. Le thème est de comprendre le panorama complet de l’API 日レセ à partir de l’information de première main. Plutôt que de lire la spécification officielle de l’API de haut en bas, nous procédons dans cet ordre :
- dénombrer à partir du code source l’ensemble des points de terminaison réellement présents côté serveur,
- suivre une API, de son implémentation jusqu’à la forme de sa réponse XML,
- confronter ce résultat à la documentation officielle pour en vérifier les écarts,
- mesurer concrètement l’évolution de l’API par un diff entre versions.
À la fin de l’article se trouve le tableau de correspondance des 137 points de terminaison (URL, programme COBOL, fonctionnalité) issu de cette investigation.
L’objet de cette investigation est le code source officiellement public du 日レセ, branche 5.2 (instantané publié le 1er juillet 2026), avec, à titre de comparaison, la branche 5.1 (publiée le même jour). Tout ce qui est décrit repose sur ces deux versions, et les commandes nécessaires à la reproduction sont indiquées dans le corps du texte.
Le public visé est celui des développeurs qui vont concevoir ou implémenter une intégration avec l’API 日レセ. Savoir lire le COBOL n’est pas nécessaire. Pour appréhender le panorama global, seuls grep et iconv sur du texte suffisent, et même au stade où l’on approfondit une API donnée, ce qu’on lit est surtout les commentaires d’en-tête et l’historique des modifications. Aucune connaissance métier de l’administration médicale n’est présupposée non plus.
Sommaire
- La conclusion, d’abord
- Prérequis ── obtenir les sources et figer la version
- Le mécanisme de dispatch de l’API ── l’URL est déterminée par
lddef - Découverte : l’API est « la version API des écrans métier » ──
bindetbindapi - Suivre une API jusqu’au bout ── anatomie de
patientgetv2 - Dénombrer tous les points de terminaison ── la procédure d’investigation en un grep
- Confronter avec la liste officielle ── des exemples d’API absentes de la liste
- Dériver la spécification d’une API non documentée à partir du code source ── l’exemple de
findv3 - Mesurer l’évolution de l’API par un diff entre versions ── branche 5.1 contre branche 5.2
- Comment traiter les API non documentées ── la « documentation » n’est pas une garantie
- Notes pratiques pour l’investigation approfondie
- Conclusion
- Annexe : tableau de correspondance des 137 points de terminaison (édition 5.2, juillet 2026)
- Références
1. La conclusion, d’abord
- La correspondance entre les URL de l’API 日レセ et les programmes côté serveur est écrite de façon déclarative dans les fichiers
lddef/*.ld(fichiers de définition LD) du code source. Sans même lire le COBOL, un simple grep sur du texte suffit à dresser le panorama complet de l’API. - Dans l’instantané de la branche 5.2, 27 définitions LD regroupent au total 137 points de terminaison via
bindapi. La page officielle listant les spécifications de l’API n’en présente qu’environ 50, ce qui signifie que le code source contient plus de deux fois plus de points de terminaison réels que la liste officielle. - La structure des requêtes et réponses XML est déclarée dans
record/*.db, et les noms de balises XML reprennent directement les noms de champs de la définition. Autrement dit, même pour une API non documentée, il est possible de dériver la spécification en suivant le cheminlddef→cobol→record. - En prenant le diff avec la branche 5.1, on observe 9 points de terminaison ajoutés, 0 supprimé. Les ajouts se concentrent autour de la vérification d’éligibilité en ligne (マイナ保険証), ce qui permet de constater concrètement que « l’API grandit avec les évolutions réglementaires, et l’existant ne disparaît pas (du moins entre ces deux branches) ».
- Une API non documentée n’est pas une « API qu’il ne faut pas utiliser ». ORCA étant open source, le code source lui-même peut être traité comme spécification de première main. La question n’est pas l’existence ou non d’un engagement contractuel, mais « peut-on se doter d’une organisation capable de détecter soi-même les changements ? » ── le cadre pour poser ce jugement est développé au chapitre 10.
2. Prérequis ── obtenir les sources et figer la version
Les sources peuvent être téléchargées sous forme d’archive tar (zip) depuis la page officielle d’information technique. Elles sont mises à jour le 1er de chaque mois avec l’instantané au 1er du mois précédent, si bien que toute constatation issue de l’investigation doit impérativement être consignée avec sa version ── c’est une règle absolue. Cet article utilise les versions suivantes.
- Source :
https://ftp.orca.med.or.jp/pub/src/jma-receipt.r_5_2_branch.zip(ainsi quer_5_1_branch.zipà titre de comparaison) - Date d’obtention : 17 juillet 2026 (les deux sont des instantanés au 1er juillet 2026)
- Fichier
VERSIONde la branche 5.2 : 5.2.0
Si vous voulez mettre la main à la pâte, voici la procédure minimale. Les commandes des chapitres suivants s’exécutent toutes depuis le répertoire d’extraction.
# Choisir un répertoire de travail et récupérer/extraire l'instantané de la branche 5.2
mkdir -p ~/orca-src && cd ~/orca-src
curl -O https://ftp.orca.med.or.jp/pub/src/jma-receipt.r_5_2_branch.zip
unzip -q jma-receipt.r_5_2_branch.zip
# Enregistrement de la version. Ces deux éléments doivent toujours figurer dans les notes d'investigation
sha256sum jma-receipt.r_5_2_branch.zip
cat jma-receipt.r_5_2_branch/VERSION # → 5.2.0
# Les commandes suivantes s'exécutent à l'intérieur de ce répertoire
cd jma-receipt.r_5_2_branch
ls lddef/ | head
En remplaçant r_5_2_branch par r_5_1_branch dans l’URL, vous pouvez extraire la branche 5.1 de comparaison selon la même procédure, ce qui permettra d’exécuter directement le diff du chapitre 9.
Une fois extraites, les sources comptent environ 8 200 fichiers pour 237 Mo. Cet article utilise principalement les trois répertoires suivants.
| Répertoire | Contenu | Usage dans cet article |
|---|---|---|
lddef/ |
Définitions LD (table de dispatch), 40 fichiers .ld (dont 27 contiennent des définitions bindapi) |
Énumération complète des points de terminaison |
cobol/ |
Logique métier (1 754 programmes COBOL, environ 4,06 millions de lignes) | Vérification de la fonctionnalité et lecture de l’implémentation de chaque API |
record/ |
Définitions de structure de données, environ 1 240 fichiers (dont 274 pour le XML) | Dérivation de la structure des requêtes et réponses |
3. Le mécanisme de dispatch de l’API ── l’URL est déterminée par lddef
Avant d’entrer dans le vif du sujet, récapitulons le vocabulaire utilisé à partir de ce chapitre. Ce sont tous des termes propres à ORCA, mais il suffit d’en retenir cinq.
| Terme | Signification |
|---|---|
| MONTSUQI (Montsuki) | Le logiciel de base sur lequel repose 日レセ. La page officielle d’information technique d’ORCA le décrit comme « un moniteur OLTP (traitement transactionnel en ligne) open source fonctionnant sous Linux ». C’est la couche qui reçoit les requêtes du client écran ou de l’API et les transmet au programme COBOL responsable |
Définition LD (lddef/*.ld) |
Fichier texte déclarant quel programme COBOL traite quelle URL (écran ou API). C’est à la fois une table de dispatch et le sommaire de ce module |
bind / bindapi |
Lignes de déclaration à l’intérieur d’une définition LD. bind déclare un écran interactif, bindapi déclare un point d’entrée d’API, une ligne par déclaration (chapitre 4) |
record/*.db |
Définition de la structure de données des requêtes, réponses et enregistrements. Les noms de balises XML reprennent directement les noms de champs de cette définition (chapitre 5) |
| xml2 | Bloc db "xml2" { … } d’une définition LD. Il énumère les définitions d’enregistrement que ce module utilise pour ses échanges XML. De nombreuses API portent la mention « (xml2) » à la fin de leur nom de fonctionnalité dans l’en-tête COBOL (annexe) |
L’URL de l’API 日レセ suit une structure à deux niveaux, « nom du module / nom du point de terminaison », comme dans /api01rv2/patientgetv2. Cette correspondance apparaît directement dans les fichiers de définition LD de lddef/.
Regardons le début de lddef/api01rv2.ld.
name api01rv2;
bindapi "patientgetv2" "OpenCOBOL" "ORAPI012R1V2";
bindapi "acceptlstv2" "OpenCOBOL" "ORAPI011R1V2";
bindapi "appointlstv2" "OpenCOBOL" "ORAPI014R1V2";
...
La lecture est directe : le nom LD est le premier segment de l’URL, le premier argument de bindapi est le second segment, et le troisième argument est le nom du programme COBOL responsable du traitement. Autrement dit, une requête vers /api01rv2/patientgetv2 est transmise au programme COBOL ORAPI012R1V2.
flowchart LR
C["Système partenaire<br/>dossier médical électronique, etc."] -->|"GET /api01rv2/patientgetv2?id=numéro de patient"| M["Serveur 日レセ<br/>MONTSUQI"]
M -->|"lddef/api01rv2.ld<br/>consultation de la définition bindapi"| P["ORAPI012R1V2.CBL<br/>Récupération des informations de base du patient"]
P --> D[("PostgreSQL")]
P -->|"Réponse XML"| C
Une définition LD déclare aussi, entre autres, l’ensemble des enregistrements XML utilisés pour construire la réponse (db "xml2" { ... }), ainsi que des réglages pratiques à connaître (comme les tailles de tableau). Un fichier LD peut se lire comme « le sommaire des écrans, API et structures de données que gère ce module ».
4. Découverte : l’API est « la version API des écrans métier » ── bind et bindapi
En parcourant les définitions LD, on remarque tout de suite quelque chose : bind (écran) et bindapi (API) cohabitent dans le même fichier. Regardons le module de consultation patient lddef/orca13.ld.
name orca13;
bind "Q01" "OpenCOBOL" "ORCGQ01"; ← écran interactif de consultation patient
bind "Q02" "OpenCOBOL" "ORCGQ02";
...
bindapi "findv3" "OpenCOBOL" "ORCGQAPI01"; ← sa version API
bindapi "findinfv3" "OpenCOBOL" "ORCGQAPI02";
bindapi "foundv3" "OpenCOBOL" "ORCGQAPI03";
Q01 et suivants sont les programmes de l’écran de consultation patient manipulé par le personnel administratif, tandis que findv3 et suivants sont les API appartenant au même module. Même les noms de programme reflètent cette relation : au nom de l’écran ORCGQ01 répond le nom ORCGQAPI01 de l’API, où « API » vient s’insérer dans le nom de la version écran.
Autrement dit, l’API 日レセ n’a pas été conçue comme un serveur d’API indépendant, mais comme une addition, module métier par module métier, d’une « porte d’entrée qui dialogue en XML à la place de l’écran », sur la même base de programmes métier interactifs. Une fois cette structure comprise, deux choses deviennent naturelles :
- pourquoi le premier segment de l’URL (
orca13,orca42…) provient du numéro de business de l’écran, et paraît à première vue un chiffre sans signification pour une API ; - pourquoi la démarche de recherche « un travail réalisable à l’écran a peut-être une version API » est valide ── chercher des API non documentées revient en réalité à énumérer ces « versions API des écrans métier ».
5. Suivre une API jusqu’au bout ── anatomie de patientgetv2
Avant de dénombrer le panorama global, suivons une API de son implémentation jusqu’à la forme de sa réponse. Le sujet est l’API la plus élémentaire, la récupération des informations de base du patient, /api01rv2/patientgetv2.
(1) Dispatch : dans lddef/api01rv2.ld, bindapi "patientgetv2" → ORAPI012R1V2. L’implémentation se trouve dans cobol/api01rv2/ORAPI012R1V2.CBL (2 163 lignes). En principe, le code source COBOL est placé dans le répertoire portant le même nom que la définition LD, si bien que, une fois lddef lu, le fichier d’implémentation peut se retrouver de façon quasi mécanique (il existe des exceptions ; par exemple, l’implémentation des API du groupe orca51 se trouve dans cobol/orca52/. Le moyen sûr reste un find sur le nom du programme).
(2) En-tête du programme : au début figure « Nom du composant : Récupération des informations de base du patient (compatible version2) », et l’historique des modifications qui suit fait défiler comme une frise chronologique les évolutions réglementaires subies par cette seule API, depuis la prise en charge des identifiants de coopération régionale en 2013, jusqu’au support de l’ordonnance électronique en 2022, en passant par le « retour de la validité de l’assurance via carte d’assurance » en 2024. C’est plus détaillé que la section « historique des mises à jour » d’une spécification d’API.
(3) Ce qui est lu : en regardant les clauses COPY (définitions communes importées) de la WORKING-STORAGE SECTION, on voit quelles données cette API manipule. Extrait :
COPY "CPPTINF.INC". *> Informations de base du patient (tbl_ptinf)
COPY "CPPTNUM.INC". *> Numéro de patient
COPY "CPJYURRK.INC". *> Historique des soins reçus
COPY "CPPTCARE-HKNINF.INC". *> Informations d'assurance dépendance
COPY "CPPTMYNUMBER.INC". *> Numéro personnel du patient (My Number)
COPY "CPONSHI-KAKU.INC". *> Résultat de vérification d'éligibilité en ligne
COPY "CPPATIENTXMLV2RES.INC" *> Édition de la réponse
Une API qui se contente de renvoyer un patient importe près de trente définitions, jusqu’à l’assurance dépendance, le My Number et la vérification d’éligibilité en ligne. C’est la preuve matérielle que la notion d’« informations de base du patient » n’a cessé de s’étoffer au fil des évolutions réglementaires.
(4) La forme de la réponse : la structure de la réponse XML est déclarée dans record/xml_patientinfov2res.db.
xml_patientinfov2res {
patientinfores {
Api_Result varchar(2);
Patient_Information {
Patient_ID varchar(20);
WholeName varchar(100);
WholeName_inKana varchar(100);
BirthDate varchar(10);
Sex varchar(1);
Home_Address_Information {
Address_ZipCode varchar(07);
...
Quiconque a déjà utilisé l’API 日レセ y reconnaîtra quelque chose. Les noms de balises XML de la réponse d’API (Patient_ID, WholeName…) reprennent directement les noms de champs de cette définition record. Autrement dit, l’« original » du tableau des champs figurant dans la spécification XML officielle se trouve ici. La taille (nombre de chiffres) des champs y est même indiquée, ce qui en fait aussi une source de première main pour la conception de la validation côté intégration.
Cette séquence (1) → (4) constitue le gabarit d’anatomie d’une API 日レセ : identifier le programme via lddef, saisir la fonctionnalité et l’historique via l’en-tête, comprendre les données manipulées via les clauses COPY, et fixer la structure du message via record/*.db ── sans même avoir à lire la logique du corps COBOL, on obtient déjà la majeure partie de l’information nécessaire à un usage pratique.
6. Dénombrer tous les points de terminaison ── la procédure d’investigation en un grep
Une fois le mécanisme compris, l’énumération complète devient un travail mécanique.
# Énumérer toute la correspondance point de terminaison → programme COBOL
grep -H '^[[:space:]]*bindapi' lddef/*.ld
# Nombre par module
for f in lddef/*.ld; do
n=$(grep -c '^[[:space:]]*bindapi' "$f"); [ "$n" -gt 0 ] && echo "$f: $n"
done
# Extraire mécaniquement le nom de fonctionnalité de chaque point de terminaison depuis l'en-tête COBOL
# (les sources sont en EUC-JP, d'où le passage par iconv ; l'emplacement du programme
# connaît des exceptions par rapport au nom LD, d'où l'identification par find)
for ld in lddef/*.ld; do
mod=$(basename "$ld" .ld)
grep '^[[:space:]]*bindapi' "$ld" | sed 's/"//g; s/;//' \
| while read -r _ ep _ prog; do
cbl=$(find cobol -name "$prog.CBL" | head -1)
comp=$(iconv -f EUC-JP -t UTF-8 "$cbl" 2>/dev/null \
| grep -m1 'コンポーネント名' \
| sed 's/.*コンポーネント名[[:space:]]*[::][[:space:]]*//')
printf '%s\t%s\t%s\t%s\n' "$mod" "$ep" "$prog" "$comp"
done
done
Le troisième script étant long, décomposons ce que fait chaque étage du pipeline.
grep '^[[:space:]]*bindapi' "$ld"── extrait uniquement les lignes de déclaration d’API de la définition LDsed 's/"//g; s/;//'── retire les guillemets et le point-virgule final, pour obtenir 4 mots séparés par des espaces (bindapi/ nom de point de terminaison /OpenCOBOL/ nom de programme)while read -r _ ep _ prog── ignore le 1er et le 3ᵉ mot, ne récupère que le nom de point de terminaison et le nom de programmefind cobol -name "$prog.CBL"── recherche l’implémentation réelle du programme. Comme le nom LD et le nom de répertoire ne coïncident pas toujours, on évite de fixer le chemin en duriconv -f EUC-JP -t UTF-8── les sources COBOL étant en EUC-JP, cette conversion est nécessaire pour lire les commentaires d’en-tête en japonaisgrep -m1 'コンポーネント名' | sed …── récupère la seule première ligne « nom du composant » de l’en-tête, et en extrait ce qui suit les deux-points (le nom de fonctionnalité)
Une fois exécuté, le résultat s’affiche en 4 colonnes séparées par des tabulations : « module / point de terminaison / programme / nom de fonctionnalité ». Les 6 premières lignes sont les suivantes.
api01rv2 patientgetv2 ORAPI012R1V2 患者基本情報取得
api01rv2 acceptlstv2 ORAPI011R1V2 受付一覧
api01rv2 appointlstv2 ORAPI014R1V2 予約一覧 (xml2)
api01rv2 patientlst1v2 ORAPI012R2V2 患者番号一覧取得処理
api01rv2 patientlst2v2 ORAPI012R3V2 患者情報一覧取得
api01rv2 patientlst3v2 ORAPI012R4V2 患者情報一覧取得(氏名指定)
Au total, on obtient 137 lignes. Les espaces doublés, comme dans « 予約一覧 (xml2)» à la 3ᵉ ligne, ou le mélange de parenthèses pleine chasse et demi-chasse, sont dus au fait que le contenu de l’en-tête est extrait tel quel. Le tableau de correspondance de l’annexe, qui présente ce résultat mis en forme, conserve lui aussi la transcription à l’identique (chapitre 13).
Voici le résultat de ce dénombrement pour cette version (le détail des 137 entrées figure en annexe) :
| Définition LD (= premier segment de l’URL) | Nombre | Domaine métier |
|---|---|---|
api01rv2 |
52 | Lecture générale (patient, accueil, rendez-vous, soins, hospitalisation, données de formulaire) |
api21 |
16 | Enregistrement, vérification, suppression des actes médicaux (externe/hospitalisation) |
orca51 |
12 | Retour en masse des référentiels et des données patient (diagnostics, points, adresses, etc.) |
orca14 |
10 | Enregistrement de rendez-vous + vérification d’éligibilité en ligne (マイナ保険証) |
orca12 |
8 | Enregistrement/mise à jour des informations patient (base/assurance/accident du travail/dépendance…) |
orca71 |
8 | Fonctions additionnelles de la vérification d’éligibilité en ligne (image OCR, aide médicale, etc.) |
orca31 |
4 | Enregistrement d’entrée/sortie d’hospitalisation, comptabilité d’hospitalisation |
orca13 / orca22 / orca42 / orca44 |
2 à 3 chacun | Consultation patient / enregistrement des diagnostics / création et impression de feuille de soins / création de données électroniques de feuille de soins |
| Autres (accueil, encaissement, impression de formulaires, gestion des utilisateurs, connexion, etc.) | Le reste | ─ |
| Total (27 modules) | 137 | ─ |
Alors qu’environ 40 % des API sont concentrées dans la lecture (api01rv2), les API de mise à jour se répartissent par module métier (patient = orca12, accueil = orca11, actes médicaux = api21…). La structure de « version API des écrans métier » vue au chapitre 4 se retrouve directement dans cette distribution.
Un autre point à noter : on trouve mêlées des fonctions de socle plutôt qu’à proprement parler métier, comme session_start (authentification de connexion) du module session, ou print (impression) du module orca00. Aussi longtemps qu’on parcourt la liste des spécifications officielles, on ne peut pas percevoir l’existence de cette couche.
Les points de terminaison individuels figurent dans le tableau de correspondance des 137 entrées en annexe. En repérant, à partir du tableau ci-dessus, le module visé selon le nombre d’entrées, puis en cherchant par nom de module dans l’annexe, on suit la démarche de recherche de base.
7. Confronter avec la liste officielle ── des exemples d’API absentes de la liste
Confrontons maintenant les API listées sur la page officielle « Spécification de l’API 日医標準レセプトソフト » (environ 50 entrées) aux 137 extraites du code source. On constate alors que de nombreux points de terminaison absents de la liste officielle existent réellement côté source. Voici des exemples par domaine fonctionnel (les noms de fonctionnalité sont tous confirmés à partir du « nom du composant » de l’en-tête COBOL).
| Domaine | Exemple de point de terminaison | Programme responsable | Fonctionnalité selon l’en-tête |
|---|---|---|---|
| Recherche de patient | /orca13/findv3 |
ORCGQAPI01 | Consultation patient |
| Traitement de feuille de soins | /orca42/receiptmakev3 |
ORAPI042R1V3 | Création de la feuille de soins (xml2) |
| Traitement de feuille de soins | /orca44/receiptdatamakev3 |
ORAPI044R1V3 | Création des données électroniques de feuille de soins (xml2) |
| Vérification | /orca41/datacheckv3 |
ORCGDAPI01 | Vérification des données |
| Gestion de facturation | /orca43/claimedmanagementv3 |
ORAPI043R1V3 | Enregistrement de la gestion de facturation |
| Socle | /session/session_start |
ORCGSESSTART | Authentification de connexion |
Autrement dit, il existe, en tant qu’implémentation, un ensemble d’API capables de piloter depuis l’extérieur le traitement mensuel des feuilles de soins (création → vérification → production des données électroniques → gestion de facturation), et pas seulement l’accueil ou l’information patient au quotidien. C’est une couche invisible si l’on ne connaît que l’intégration au dossier médical électronique.
Deux mises en garde importantes s’imposent ici.
- Ne pas conclure hâtivement qu’« absent de la liste » signifie « non documenté ». Par exemple, la récupération de données de formulaire (
formdatagetv2) est documentée côté documentation de l’API Push, et la page de liste ne garantit pas l’exhaustivité de toutes les API. Il convient de vérifier aussi les pages de documentation individuelles et la recherche sur le site avant d’affirmer qu’« aucune documentation n’a été trouvée » (le tableau ci-dessus est le résultat de cette vérification, mais cela ne constitue pas pour autant une preuve complète de l’absence de toute documentation publiée). - Les implémentations tierces peuvent aussi servir de matériau de comparaison. Un projet open source comme la bibliothèque orca-api, qui permet d’utiliser l’API 日レセ depuis Ruby, constitue une référence utile en tant que catalogue de points de terminaison réellement utilisés en pratique.
8. Dériver la spécification d’une API non documentée à partir du code source ── l’exemple de findv3
Savoir qu’« il existe des API absentes de la liste » ne permet pas d’enquêter tant qu’on ignore la forme de la requête. C’est là que le gabarit du chapitre 5 devient efficace. Essayons avec findv3 (consultation patient).
La structure de la requête se trouve dans record/xml_findv3req.db (extrait).
xml_findv3req {
findv3req {
Request_Number varchar(2);
Patient_Information {
BirthDate { First varchar(10); Last varchar(10); };
Sex varchar(1);
LastVisit_Date { First varchar(10); Last varchar(10); };
Doctor_Code varchar(05);
Department_Code varchar(2);
Death_Class varchar(1);
Patient_ID { First varchar(20); Last varchar(20); };
TestPatient_Class varchar(1);
WholeName varchar(100)[5];
...
Rien qu’en lisant cette définition, on comprend qu’il s’agit d’une API de recherche de patient assez sophistiquée, permettant de combiner plage de date de naissance, sexe, plage de dernière date de visite, médecin traitant, service, catégorie de décès, plage de numéro de patient, plusieurs noms possibles, etc. Les API de recherche patient listées officiellement (patientlst1v2 et suivants) sont surtout centrées sur des recherches à critère unique comme la plage de numéro de patient ou le nom, si bien que cette API, capable d’une recherche multicritère équivalente à l’écran de consultation patient, en est fonctionnellement une évolution nettement supérieure.
La structure de la réponse se trouve de la même façon dans record/xml_findv3res.db, et en lisant le COBOL correspondant (ORCGQAPI01.CBL), on peut aussi vérifier des comportements fins (limite du nombre de résultats, ordre de tri, etc.). Une « API non documentée » est, pour ORCA dont le code source est public, une « API dont on peut rédiger soi-même la documentation ».
Jusqu’où faire confiance, en production, à une spécification ainsi dérivée ── c’est le thème du chapitre suivant.
9. Mesurer l’évolution de l’API par un diff entre versions ── branche 5.1 contre branche 5.2
Avant de discuter du risque des API non documentées, mesurons concrètement « à quel point une API change ». Voici le résultat du diff des définitions bindapi entre l’instantané de la branche 5.1 publié le même jour et la branche 5.2 :
| Élément comparé | Résultat |
|---|---|
| Nombre total de points de terminaison de la branche 5.1 | 128 |
| Nombre total de points de terminaison de la branche 5.2 | 137 |
| Ajoutés dans la branche 5.2 | 9 |
| Supprimés dans la branche 5.2 | 0 |
Le détail des 9 ajouts se compose de 6 points liés à la vérification d’éligibilité en ligne (onlinequa10, onlinequa11, onlinequaapp1 à 3, onlineaidlstreq1), de l’enregistrement de note patient (patientmemomodv2), du retour groupé des codes de saisie (inputcodelstv3), et de la récupération des informations de code de saisie et de consultation (medicationgetv2), soit 9 entrées en tout. On voit clairement que les évolutions réglementaires (autour de マイナ保険証) se traduisent par des ajouts d’API.
Cette observation permet deux constats :
- la « surface » des points de terminaison est stable (zéro suppression entre ces deux branches) ; ce qu’il faut craindre n’est pas tant leur disparition que l’ajout de champs et le changement de comportement d’une API donnée (des changements du type de ceux observés dans l’historique de modifications au chapitre 5) ;
- comme les sources sont publiées chaque mois, ce type de détection de changement peut être automatisé. Pour quiconque maintient un système d’intégration, un simple diff mensuel des
lddefetrecordde l’instantané suffit à constituer un réseau d’alerte précoce sur ce qui va changer à la prochaine mise à jour de version. C’est un moyen de maintenance rare, propre à la publication du code source, difficile à obtenir avec d’autres logiciels de facturation médicale.
10. Comment traiter les API non documentées ── la « documentation » n’est pas une garantie
Commençons par établir le bon cadre. Le contrat de licence d’utilisation open source de 日医 (l’Association médicale du Japon, éditrice d’ORCA) stipule, à l’article 5 du chapitre 2, une absence de garantie pour l’ensemble du programme, concernant le bon fonctionnement ou l’absence de défaut. Cela s’applique de manière égale aux API documentées. Il n’existe pas non plus, dans les documents officiels, de clause explicite promettant de « ne pas changer » les API documentées en matière de compatibilité ; d’ailleurs, comme on l’a vu au chapitre 5, même patientgetv2, pourtant représentative des API documentées, a continué de voir ses champs s’ajouter à chaque évolution réglementaire.
Autrement dit, la différence entre « documenté » et « non documenté » ne porte pas sur l’existence d’une garantie. La différence réelle se résume, en creusant, à ces deux points seulement :
- la probabilité que le changement apparaisse comme une mise à jour de la documentation officielle (un changement sur une API non documentée reste invisible tant qu’on ne lit pas le code source) ;
- la facilité à en discuter avec le prestataire de support.
Or, chez ORCA, le code source est publié chaque mois. Le premier écart peut être comblé par une surveillance des diffs du code source. C’est le code source qui constitue la spécification de première main ; la documentation n’en est qu’une traduction abrégée ── c’est la bonne posture à adopter face à l’open source. Quand la documentation et le code source se contredisent, c’est le code source qui s’exécute réellement.
Cela étant posé, dès lors qu’on manipule un système de facturation médicale directement lié à de l’argent, qu’une API soit documentée ou non, il faut associer les pratiques opérationnelles suivantes à toute API intégrée dans un flux de production.
| À faire | Objectif |
|---|---|
| Figer et consigner la version (date d’obtention, SHA-256, correspondance avec le paquet en production) | Rendre l’investigation et la validation reproductibles à tout moment. Dans un environnement où le prestataire de support applique des correctifs maison, vérifier également l’écart avec le code source public |
Surveillance des diffs de l’instantané mensuel (lddef/record + COBOL responsable des API utilisées) |
Détection précoce des changements. Les changements d’interface apparaissent dans lddef/record, les changements de comportement côté COBOL. Comme le changement d’une API non documentée n’apparaît pas dans la documentation officielle, le diff du code source devient le moyen de détection effectif |
| Intégrer une validation de non-régression en environnement de test au processus de mise à jour de version | Éviter que quelque chose ne « se casse silencieusement » au mois de la révision |
| Rédiger et maintenir une documentation maison pour les API non documentées | Faire de la spécification dérivée par la méthode du chapitre 8 un actif de l’équipe |
| Partager la configuration d’utilisation avec le prestataire de support | Accélérer le diagnostic en cas d’incident |
Une précaution opérationnelle : l’instantané public correspond au 1er du mois précédent, si bien que si l’on applique d’abord la mise à jour du paquet en production, on ne peut lire le code source correspondant qu’après coup. Pour que cette surveillance fonctionne comme une véritable alerte précoce, il faut inverser l’ordre : attendre la publication et la validation du code source correspondant avant de procéder à la mise à jour de version.
Inversement, une organisation incapable de mettre en place ce type de pratique n’est pas plus en sécurité en n’utilisant que des API documentées. Confier un socle métier à un logiciel open source sans garantie, c’est précisément cela.
11. Notes pratiques pour l’investigation approfondie
Voici quelques écueils fins qu’on rencontre au stade où l’on approfondit une API donnée dans le code source.
- L’encodage des caractères est l’EUC-JP. Les sources et commentaires COBOL étant en EUC-JP, il faut passer par
iconv -f EUC-JP -t UTF-8avant de les lire. Le document de licence (doc/license.html) est en ISO-2022-JP. Même grep ne trouvera aucun mot-clé japonais sans passer pariconv. - Retenir la convention de nommage des programmes accélère la lecture. Pour les API, la forme de base est
ORAPI+ numéro de business +R(lecture)/S(mise à jour) + version (V2/V3) ; pour la version API des écrans, c’estORCG〜API〜. Le code source COBOL se trouve en principe danscobol/<nom LD>/, mais il existe des exceptions (l’implémentation des API deorca51se trouve danscobol/orca52/), donc en cas de doute, faites unfindsur le nom du programme. - Le sens des champs de données se confirme en croisant
record/et le tableau officiel de définition des tables. L’« original » des champs de réponse se trouve dansrecord/*.db, et le sens côté base de données dans le tableau de définition des tables publié officiellement. Croiser les deux augmente la fiabilité. Notez qu’une partie des définitions coexiste avec une version.db.weborcapour WebORCA, dont les limites de tableau diffèrent (par exemple,xml_acceptlstv2respasse de 1 000 à 1 500 entrées). Pour une conception d’intégration WebORCA, vérifiez cette version. - Vérifiez le fonctionnement en environnement de test. Le serveur d’essai officiel ou un environnement Docker communautaire permettent d’interroger l’API et de vérifier son comportement sans toucher à la machine de production. « Tester en direct » sur la machine de production est à proscrire absolument.
12. Conclusion
- Le panorama complet de l’API 日レセ est concentré dans les définitions
bindapidelddef/*.ld: un simple grep suffit à énumérer 137 points de terminaison (branche 5.2, édition juillet 2026). - La véritable nature de l’API 日レセ est celle d’une « version API des écrans métier ».
bind(écran) etbindapi(API) cohabitent dans la même définition LD, et le nom de module de l’URL provient du numéro de business de l’écran. - Une API se dissèque dans l’ordre
lddef(dispatch) → en-tête COBOL (fonctionnalité, historique) → clauses COPY (données manipulées) →record/*.db(original de la structure XML). Le nom de balise XML est exactement le nom de champ de la définitionrecord. - L’écart entre la liste officielle (environ 50 entrées) et le code source (137 entrées) inclut un ensemble d’API capables de piloter le traitement mensuel ── création de feuille de soins, production de données électroniques, vérification des données. Mais il ne faut pas conclure hâtivement qu’« absent de la liste » équivaut à « non documenté » : chaque cas doit être vérifié individuellement.
- La mesure réelle du diff avec la branche 5.1 montre 9 ajouts (majoritairement liés à la vérification d’éligibilité en ligne), 0 suppression. Le diff de l’instantané mensuel peut servir de réseau d’alerte précoce pour la maintenance d’une intégration.
- Le contrat de licence d’utilisation stipule explicitement une absence de garantie, y compris pour les API documentées : « documenté » ne signifie pas « sûr ». C’est le code source qui constitue la spécification de première main. Que l’API soit documentée ou non, un usage en production doit associer figeage de version, surveillance mensuelle des diffs, validation de non-régression, et tenue d’une documentation maison.
Cet ordre consistant à entrer par le code source plutôt que par la spécification est une méthode d’investigation qui, au-delà d’ORCA, s’applique à tout « système métier de longue durée dont la documentation n’a pas suivi l’implémentation ». Par chance, le code source d’ORCA est public, ce qui permet de pratiquer cette méthode en toute légalité, et qui plus est, avec un état à jour chaque mois.
13. Annexe : tableau de correspondance des 137 points de terminaison (édition 5.2, juillet 2026)
Voici l’ensemble des points de terminaison extraits mécaniquement des définitions bindapi de lddef/*.ld. Les noms de fonctionnalité sont notre traduction française du champ « nom du composant » de l’en-tête de chaque programme COBOL. Le texte japonais source transcrit ce champ tel quel, y compris ses variations orthographiques, ses parenthèses pleine chasse et ses fautes de frappe apparentes (des éléments comme « 請求額シュミレーション » au lieu de シミュレーション, ou medicatonmodv2 au lieu de medicationmodv2, ne sont pas des erreurs de notre part mais des particularités du code source d’origine). Ce tableau est un relevé factuel de l’instantané de la branche 5.2 au 1ᵉʳ juillet 2026 ; il n’indique ni la possibilité d’utilisation ni le statut de support de chaque point de terminaison.
Le tableau est trié par module (premier segment de l’URL). Pour retrouver rapidement une API donnée, affinez la recherche dans cet ordre. La recherche dans la page du navigateur (Ctrl+F) sur le nom de module vous amène directement au début du bloc correspondant.
| Ce que vous cherchez | Module à consulter |
|---|---|
| Récupérer une information (patient, accueil, rendez-vous, soins, hospitalisation, données de formulaire) | /api01rv2/ |
| Enregistrer, vérifier ou supprimer un acte médical | /api21/ |
| Récupérer en masse un référentiel ou des données patient | /orca51/ |
| Enregistrer ou mettre à jour des informations patient | /orca12/ |
| Vérification d’éligibilité en ligne (マイナ保険証) | /orca14/ · /orca71/ |
| Traitement mensuel des feuilles de soins (vérification, création, impression, données électroniques, gestion de facturation) | /orca41/ · /orca42/ · /orca43/ · /orca44/ |
| Entrée/sortie d’hospitalisation, comptabilité d’hospitalisation | /orca31/ · /orca32/ · /orca36/ |
| Fonctions de socle comme la connexion ou l’impression | /session/ · /orca00/ |
| URL | Programme COBOL | Fonctionnalité selon l’en-tête |
|---|---|---|
/api01rv2/patientgetv2 |
ORAPI012R1V2 | Récupération des informations de base du patient |
/api01rv2/acceptlstv2 |
ORAPI011R1V2 | Liste des accueils |
/api01rv2/appointlstv2 |
ORAPI014R1V2 | Liste des rendez-vous (xml2) |
/api01rv2/patientlst1v2 |
ORAPI012R2V2 | Traitement de récupération de la liste des numéros de patient |
/api01rv2/patientlst2v2 |
ORAPI012R3V2 | Récupération de la liste des informations patient |
/api01rv2/patientlst3v2 |
ORAPI012R4V2 | Récupération de la liste des informations patient (par nom) |
/api01rv2/system01lstv2 |
ORAPI101R1V2 | Gestion système : récupération de la liste des services et des médecins |
/api01rv2/medicalgetv2 |
ORAPI021R1V2 | Retour des actes médicaux 1 (xml2) |
/api01rv2/diseasegetv2 |
ORAPI022R1V2 | Retour des diagnostics du patient |
/api01rv2/appointlst2v2 |
ORAPI014R2V2 | État des rendez-vous du patient (xml2) |
/api01rv2/acsimulatev2 |
ORAPI023R1V2 | Simulation du montant facturé |
/api01rv2/visitptlstv2 |
ORAPI021R2V2 | Liste des patients venus en consultation (xml2) |
/api01rv2/hsconfbasev2 |
ORAPI031RC1V2 | Récupération des informations de base d’hospitalisation |
/api01rv2/hsconfwardv2 |
ORAPI031RC2V2 | Récupération des informations de service d’hospitalisation |
/api01rv2/tmedicalgetv2 |
ORAPI021R3V2 | Liste des données intermédiaires (xml2) |
/api01rv2/hsmealv2 |
ORAPI032R1V2 | Récupération des informations de repas d’hospitalisation |
/api01rv2/insprogetv2 |
ORAPI105R1V2 | Liste du référentiel des organismes assureurs (xml2) |
/api01rv2/hsptevalv2 |
ORAPI032R2V2 | Récupération de la catégorie de soins d’hospitalisation et du score AVQ (ADL) |
/api01rv2/hsptinfv2 |
ORAPI031R1V2 | Récupération des informations de base du patient hospitalisé |
/api01rv2/hsacsimulatev2 |
ORAPI034R1V2 | Calcul provisoire de sortie d’hospitalisation |
/api01rv2/incomeinfv2 |
ORAPI023R2V2 | Récupération des informations d’encaissement |
/api01rv2/systeminfv2 |
ORAPI000R1V2 | Récupération des informations système |
/api01rv2/insuranceinf1v2 |
ORAPI012R5V2 | Référentiel des numéros d’assurance (types d’assurance et d’aide publique), récupération de la catégorie de subvention |
/api01rv2/receiptinf1v2 |
ORAPI042R1V2 | Récupération des informations de feuille de soins (nombre de feuilles, points) |
/api01rv2/claimfrontv2 |
ORAPICLAIMR1V2 | Envoi de réception CLAIM (xml2) |
/api01rv2/claimaccountv2 |
ORAPICLAIMR2V2 | Envoi de confirmation de facturation CLAIM (xml2) |
/api01rv2/formdatagetv2 |
ORAPI001R1V2 | Récupération des données de formulaire imprimé |
/api01rv2/contraindicationcheckv2 |
ORAPI021R4V2 | Retour des informations de contre-indication médicamenteuse (xml2) |
/api01rv2/okusurigetv2 |
ORAPIRELR1V2 | Informations du carnet de médicaments du patient (xml2) |
/api01rv2/okusuriputv2 |
ORAPIRELR2V2 | Informations du carnet de médicaments du patient (xml2) |
/api01rv2/imagegetv2 |
ORAPI000R2V2 | Récupération des données d’image |
/api01rv2/patientlst6v2 |
ORAPI012R6V2 | Récupération des combinaisons d’assurance du patient |
/api01rv2/prescriptionv2 |
ORAPI001R2V2 | Impression de l’ordonnance |
/api01rv2/medicinenotebookv2 |
ORAPI001R3V2 | Impression du carnet de médicaments |
/api01rv2/subjectiveslstv2 |
ORAPI025R1V2 | Récupération des informations de commentaire clinique détaillé (xml2) |
/api01rv2/system01dailyv2 |
ORAPI101R2V2 | Gestion système : récupération des informations d’enregistrement patient et de paramétrage des actes médicaux |
/api01rv2/pusheventgetv2 |
ORAPI000R3V2 | Récupération des notifications Push |
/api01rv2/apiversiongetv2 |
ORAPI000R4V2 | Récupération de la version de l’API |
/api01rv2/karteno1v2 |
ORAPI001R4V2 | Impression du dossier médical feuille n°1 (consultation externe) |
/api01rv2/karteno1hv2 |
ORAPI001R5V2 | Impression du dossier médical feuille n°1 (hospitalisation) |
/api01rv2/karteno3v2 |
ORAPI001R6V2 | Impression du dossier médical feuille n°3 (consultation externe) |
/api01rv2/karteno3hv2 |
ORAPI001R7V2 | Impression du dossier médical feuille n°3 (hospitalisation) |
/api01rv2/patientlst7v2 |
ORAPI012R7V2 | Récupération du contenu des notes patient |
/api01rv2/invoicereceiptv2 |
ORAPI001R8V2 | Facture-reçu de consultation externe |
/api01rv2/statementv2 |
ORAPI001R9V2 | Relevé détaillé des frais de consultation externe |
/api01rv2/invoicereceipthv2 |
ORAPI001R10V2 | Facture-reçu d’hospitalisation |
/api01rv2/statementhv2 |
ORAPI001R11V2 | Relevé détaillé des frais d’hospitalisation |
/api01rv2/onlinedruggetv2 |
ORAPIONSHIR1V2 | API : traitement de récupération des informations médicamenteuses de vérification d’éligibilité |
/api01rv2/onlinespecgetv2 |
ORAPIONSHIR2V2 | API : traitement de récupération des informations de bilan de santé spécifique de vérification d’éligibilité |
/api01rv2/patientlst8v2 |
ORAPI012R8V2 | Récupération de l’historique des noms de naissance |
/api01rv2/onlinemedgetv2 |
ORAPIONSHIR3V2 | API : traitement de récupération des informations de consultation de vérification d’éligibilité |
/api01rv2/medicationgetv2 |
ORAPI102R1V2 | Récupération des informations de codes de saisie et de consultation |
/api21/medicalmodv2 |
ORAPI021S1V2 | Enregistrement des actes médicaux (xml2) |
/api21/medicalmodv31 |
ORAPI021S1V3 | Actes médicaux : retour des frais de consultation (saisie intégrée) |
/api21/medicalmodv32 |
ORAPI021S2V3 | Actes médicaux : vérification du contenu des soins (saisie intégrée) |
/api21/medicalmodv33 |
ORAPI021S3V3 | Actes médicaux : enregistrement des actes médicaux (saisie intégrée) |
/api21/medicalmodv34 |
ORAPI021S4V3 | Actes médicaux : suppression (saisie intégrée) |
/api21/claimreceivev2 |
ORAPICLAIM21S1V2 | CLAIM : enregistrement des actes médicaux (xml2) |
/api21/medicalmodv35 |
ORAPI021S5V3 | Actes médicaux : enregistrement de la date de début de rééducation et des commentaires |
/api21/medicalmodv36 |
ORAPI021S6V3 | Actes médicaux : traitement de changement groupé d’assurance |
/api21/tmedicalmodv2 |
ORAPI021S2V2 | Récupération et suppression des données intermédiaires (xml2) |
/api21/medicalmodv37 |
ORAPI021S7V3 | Traitement de libération du verrou d’exclusion |
/api21/medicalmodav31 |
ORAPI021NS1V3 | Actes médicaux d’hospitalisation : retour initial (saisie intégrée) |
/api21/medicalmodav32 |
ORAPI021NS2V3 | Actes médicaux d’hospitalisation : vérification du contenu des soins |
/api21/medicalmodav33 |
ORAPI021NS3V3 | Actes médicaux d’hospitalisation : enregistrement des actes médicaux (saisie intégrée) |
/api21/medicalmodav34 |
ORAPI021NS4V3 | Actes médicaux d’hospitalisation : suppression (saisie intégrée) |
/api21/medicalmodv23 |
ORAPI021S3V2 | Traitement d’enregistrement de la date de calcul de première consultation |
/api21/medicalmodav35 |
ORAPI021NS5V3 | Actes médicaux d’hospitalisation : mise à jour des frais de préparation pharmaceutique d’hospitalisation (saisie intégrée) |
/orca00/print |
ORCGMPRT | Module API d’impression |
/orca01/reprintv3 |
ORAPI001R1V3 | Récupération de réimpression (xml2) |
/orca02/jobmanagev3 |
ORAPI002R1V3 | Retour de la liste des tâches (xml2) |
/orca06/patientmemomodv2 |
ORAPI006S1V2 | Traitement d’enregistrement du contenu des notes patient |
/orca07/statisticsdatav3 |
ORAPI007R1V3 | Écran de sélection d’export CSV (récupération des données statistiques journalières et mensuelles) |
/orca101/manageusersv2 |
ORCGWAPI01 | Gestion des utilisateurs |
/orca102/medicatonmodv2 |
ORAPI102S1V2 | Enregistrement du référentiel de points utilisateur (xml) |
/orca11/acceptmodv2 |
ORAPI011S1V2 | Enregistrement de l’accueil (xml2) |
/orca12/patientmodv2 |
ORAPI012S1V2 | Paramétrage des informations de base du patient (enregistrement/suppression) (xml2) |
/orca12/patientmodv31 |
ORAPI012S1V3 | Paramétrage des informations de base du patient (enregistrement/suppression) (V3) |
/orca12/patientmodv32 |
ORAPI012S2V3 | Paramétrage des informations d’assurance et d’aide publique du patient (enregistrement/suppression) (V3) |
/orca12/patientmodv33 |
ORAPI012S3V3 | Paramétrage des informations d’accident du travail et d’assurance responsabilité civile automobile du patient (enregistrement/suppression) (V3) |
/orca12/patientmodv34 |
ORAPI012S4V3 | Paramétrage des informations de revenu, mentions particulières et informations individuelles du patient |
/orca12/patientmodv35 |
ORAPI012S5V3 | Paramétrage des informations de montant à charge de l’aide publique du patient |
/orca12/patientmodv36 |
ORAPI012S6V3 | Paramétrage des informations d’assurance dépendance et de certification de dépendance du patient |
/orca12/patientmodv37 |
ORAPI012S7V3 | Paramétrage des médicaments contre-indiqués du patient |
/orca13/findv3 |
ORCGQAPI01 | Consultation patient |
/orca13/findinfv3 |
ORCGQAPI02 | Consultation patient |
/orca13/foundv3 |
ORCGQAPI03 | Consultation patient (impression) |
/orca14/appointmodv2 |
ORAPI014S1V2 | Enregistrement de rendez-vous (xml2) |
/orca14/onlinequa1 |
ORAPION001R1V2 | Vérification d’éligibilité en ligne |
/orca14/onlinequa2 |
ORAPION002R1V2 | Traitement d’enregistrement et de mise à jour de la vérification d’éligibilité par reconnaissance faciale |
/orca14/onlinequa3 |
ORAPION003R1V2 | Traitement d’enregistrement et de mise à jour de la vérification d’éligibilité par carte d’assurance |
/orca14/onlinedrug1 |
ORAPION004R1V2 | Traitement d’enregistrement et de mise à jour des informations médicamenteuses de vérification d’éligibilité |
/orca14/onlinespec1 |
ORAPION005R1V2 | Traitement d’enregistrement et de mise à jour du bilan de santé spécifique de vérification d’éligibilité |
/orca14/onlinerefall1 |
ORAPION006R1V2 | Enregistrement groupé des numéros de consultation |
/orca14/onlinequa4 |
ORAPION007R1V2 | Traitement d’enregistrement et de mise à jour de la vérification de l’aide publique |
/orca14/onlinequaapp1 |
ORAPION008R1V2 | Traitement de vérification d’éligibilité groupée des patients ayant rendez-vous |
/orca14/onlinequaapp2 |
ORAPION009R1V2 | Traitement de vérification d’éligibilité groupée des patients ayant rendez-vous |
/orca21/medicalsetv2 |
ORAPI021SETV2 | Enregistrement d’ensembles d’actes médicaux (xml2) |
/orca22/diseasev2 |
ORAPI022R1V3 | Enregistrement des diagnostics du patient (xml2) |
/orca22/diseasev3 |
ORAPI022R2V3 | Enregistrement des diagnostics du patient (xml2) |
/orca23/incomev3 |
ORCGSAPI01 | Encaissement (liste de facturation) |
/orca25/subjectivesv2 |
ORAPI025S1V2 | Enregistrement des commentaires cliniques détaillés (xml2) |
/orca31/hsptinfmodv2 |
ORCGI0API01 | Enregistrement d’hospitalisation |
/orca31/birthdeliveryv2 |
ORCGI0API02 | Allocation forfaitaire de naissance |
/orca31/hsacctmodv2 |
ORCGI4API02 | Enregistrement de la comptabilité d’hospitalisation |
/orca31/hspmmv2 |
ORCGI4API03 | Retour du dernier mois de soins de la comptabilité d’hospitalisation |
/orca32/hsptevalmodv2 |
ORCGI4API01 | Enregistrement de la catégorie de soins et du score AVQ (ADL) |
/orca36/hsfindv3 |
ORCGI2API01 | Consultation du patient hospitalisé |
/orca41/datacheckv3 |
ORCGDAPI01 | Vérification des données |
/orca42/receiptmakev3 |
ORAPI042R1V3 | Création de la feuille de soins (xml2) |
/orca42/receiptprintv3 |
ORAPI042R2V3 | Impression de la feuille de soins (xml2) |
/orca42/unclaimedv3 |
ORAPI042R3V3 | Paramétrage des non-facturés |
/orca43/claimedmanagementv3 |
ORAPI043R1V3 | Enregistrement de la gestion de facturation |
/orca44/receiptdatamakev3 |
ORAPI044R1V3 | Création des données électroniques de feuille de soins (xml2) |
/orca44/receiptdatacheckmakev3 |
ORAPI044R2V3 | Création des données électroniques de feuille de soins pour vérification (xml2) |
/orca44/receiptdatapatientmakev3 |
ORAPI044R3V3 | Création individuelle des données électroniques de feuille de soins (xml2) |
/orca51/diseasemasterlstv3 |
ORAPI052R1V3 | Retour du référentiel des diagnostics (xml2) |
/orca51/medicationmasterlstv3 |
ORAPI052R2V3 | Retour du référentiel des points (xml2) |
/orca51/stock1v2 |
ORAPI052R3V3 | Retour des informations de gestion des stocks (xml2) |
/orca51/patientbasisallv3 |
ORAPI052R4V3 | Retour groupé des informations de base des patients (xml2) |
/orca51/patientdiseaseallv3 |
ORAPI052R5V3 | Retour du référentiel des diagnostics des patients (xml2) |
/orca51/masterlastupdatev3 |
ORAPI052R6V3 | Retour de la date de dernière mise à jour du référentiel |
/orca51/patientmedicalallv3 |
ORAPI052R7V3 | Retour groupé des actes médicaux des patients (xml2) |
/orca51/addressmasterlstv3 |
ORAPI052R8V3 | Retour du référentiel des adresses (xml2) |
/orca51/tempmedicaladdv3 |
ORAPI051R1V3 | Enregistrement groupé des données intermédiaires (xml2) |
/orca51/statisticsformv3 |
ORAPI051R2V3 | Récupération de la liste des statistiques journalières et mensuelles (xml2) |
/orca51/masterexportv3 |
ORAPI052R9V3 | Récupération du référentiel |
/orca51/inputcodelstv3 |
ORAPI052R10V3 | Retour groupé des codes de saisie (xml2) |
/orca71/onshicond |
ORAPIONCONDR1V2 | Vérification d’éligibilité en ligne |
/orca71/onlineimg1 |
ORAPION011R1V2 | Vérification d’éligibilité : traitement d’enregistrement de l’image OCR de la carte d’assurance |
/orca71/onlinemedical1 |
ORAPION010R1V2 | Vérification d’éligibilité : traitement d’enregistrement et de mise à jour des informations de consultation |
/orca71/onlinemedical2 |
ORAPION012R1V2 | Vérification d’éligibilité : traitement d’enregistrement et de mise à jour des informations de consultation dentaire |
/orca71/onlineaidlstreq1 |
ORAPION013R1V2 | Vérification d’éligibilité : traitement d’enregistrement du numéro d’attribution de l’aide médicale |
/orca71/onlinequaapp3 |
ORAPION014R1V2 | Traitement de vérification d’éligibilité groupée des patients en soins à domicile |
/orca71/onlinequa10 |
ORAPION015R1V2 | Traitement d’enregistrement et de mise à jour des informations de subvention des frais médicaux |
/orca71/onlinequa11 |
ORAPION016R1V2 | Traitement d’enregistrement et de mise à jour de l’inscription aux soins à domicile / à la téléconsultation |
/session/session_start |
ORCGSESSTART | Authentification de connexion |
14. Références
- Informations techniques - 日医標準レセプトソフト - ORCA Project (publication du code source)
- Spécification de l’API 日医標準レセプトソフト - ORCA Project
- API 日医標準レセプトソフト - ORCA Project
- orca-api : bibliothèque Ruby pour l’API 日医標準レセプトソフト (GitHub)
- Code source du 日レセ, branches 5.2 et 5.1 (instantanés publiés en juillet 2026)
lddef/api01rv2.ld/lddef/orca13.ld/cobol/api01rv2/ORAPI012R1V2.CBL/record/xml_patientinfov2res.db/record/xml_findv3req.dbet autres ── toutes les valeurs mesurées et citations du corps de l’article reposent sur cet instantané
Articles associés
Articles récents partageant les mêmes étiquettes, pour approfondir des sujets proches.
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
Le numéro d'assureur inscrit sur la carte d'assurance maladie se compose d'un code de catégorie légale sur 2 chiffres, d'un numéro de pré...
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...
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...
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...
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 ...
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
Le choix d'une méthode d'intégration avec ORCA et l'investigation de comportements non décrits dans les spécifications sont des sujets typiques de conseil technique et de revue de conception.
Réutilisation et migration d'actifs existants
La lecture du code source des actifs COBOL et la conception de l'intégration s'inscrivent dans le prolongement direct des projets de migration et d'intégration valorisant les actifs hérités.
Questions fréquentes
Questions souvent posées lors d’une consultation sur le sujet de cet article.
- Combien de points de terminaison compte au total l'API 日レセ ?
- La page officielle listant les spécifications de l'API en recense environ 50, mais si l'on compte les fichiers de définition LD du code source public (branche 5.2, instantané de juillet 2026), le nombre de points de terminaison regroupés sous bindapi s'élève à 137. Cet écart inclut des cas comme les API de formulaires imprimés, qui sont documentées ailleurs, si bien qu'on ne peut pas conclure hâtivement qu'« absent de la liste » équivaut à « non documenté ». Mais en comptant directement dans le code source, on obtient un panorama complet de l'API en tant qu'information de première main. Cet article présente le tableau de correspondance des 137 points de terminaison.
- Peut-on utiliser en production une API absente de la documentation officielle ?
- Oui. Le code source d'ORCA est public, ce qui permet de consulter l'implémentation elle-même comme spécification de première main. Le contrat de licence d'utilisation stipule d'ailleurs explicitement une absence de garantie pour l'ensemble du programme, y compris les API documentées : le postulat selon lequel « documenté = sûr » est donc erroné en soi. L'écart réel entre documenté et non documenté se résume à deux points : la probabilité que les changements apparaissent dans la documentation officielle, et la facilité à en discuter avec le prestataire de support. Le premier point peut être comblé par une surveillance des diffs sur les sources publiées mensuellement, mais le second (les API non documentées entrent difficilement dans le périmètre du support) subsiste. Pour un usage en production, associez toujours le figeage de version, la surveillance des diffs, la validation de non-régression en environnement de test, la tenue d'une documentation maison et le partage de la configuration avec le prestataire de support. Ceci vaut d'ailleurs tout autant pour les API documentées.
- Le format des requêtes et réponses de l'API est-il lui aussi lisible dans le code source ?
- Oui. La structure des requêtes et réponses XML de 日レセ est écrite de façon déclarative dans les fichiers de définition du répertoire record/ (par exemple record/xml_patientinfov2res.db), et les noms de balises XML reprennent directement les noms de champs de cette définition. Même pour une API non documentée, il suffit d'identifier le programme responsable à partir de la définition LD, puis de lire la définition record correspondante, pour dériver l'ensemble des champs de la requête et de la réponse.
- Peut-on mener cette investigation sans savoir lire le COBOL ?
- Pour se contenter d'appréhender le panorama global des points de terminaison, la lecture du COBOL n'est quasiment pas nécessaire. Les fichiers de définition LD (lddef/*.ld) et les définitions de structure de données (record/*.db) sont du texte, et la correspondance entre URL, programme et structure XML y est écrite de façon déclarative. Ce n'est qu'au stade où l'on veut approfondir le comportement interne d'une API donnée que la lecture du COBOL devient nécessaire, mais même à ce stade, les commentaires d'en-tête de programme (en japonais) et l'historique des modifications suffisent à obtenir une grande partie de l'information.
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.