En el artículo anterior repasamos que ORCA (Nichi-i Hyōjun Recept Software, el software estándar de facturación médica de la Asociación Médica Japonesa) es un sistema de facturación médica, y que su código fuente lleva más de veinte años publicándose de forma continua.
En esta entrega vamos a leer de verdad ese código fuente. El tema es comprender la arquitectura completa de la API de Nichi-Rece a partir de información de primera mano. En lugar de leer de arriba abajo las especificaciones oficiales de la API, vamos a probar el siguiente orden:
- contar desde el código fuente todos los endpoints que existen realmente en el servidor,
- seguir una sola API desde la implementación hasta la forma del XML de respuesta,
- cotejarla con la documentación oficial para verificar las diferencias, y
- medir el cambio de la API mediante un diff entre versiones
Al final del artículo se incluye, como resultado de esta investigación, la tabla de correspondencias de los 137 endpoints (URL, programa COBOL y función).
El objeto de estudio de este artículo es el código fuente público de la serie 5.2 del núcleo de Nichi-Rece (instantánea publicada el 1 de julio de 2026), y como referencia de comparación se usa también la serie 5.1 (publicada el mismo día). Toda la descripción se basa en estas dos versiones, y en el texto se muestran los comandos necesarios para reproducirla.
El público al que se dirige este artículo son los desarrolladores que van a diseñar e implementar, de aquí en adelante, una integración con la API de Nichi-Rece. No hace falta saber leer COBOL. Para captar la arquitectura completa basta con grep e iconv sobre texto plano, y aun en la fase de profundizar en una API concreta, lo que se lee es sobre todo los comentarios de la cabecera y el historial de modificaciones. Tampoco se da por sentado ningún conocimiento práctico de administración médica.
Índice
- La conclusión primero
- Requisitos previos — cómo obtener el código fuente y fijar la versión
- El mecanismo de despacho de la API — la URL la determina
lddef - Descubrimiento: la API es «la versión API de las pantallas de trabajo» —
bindybindapi - Siguiendo una API de principio a fin — disección de
patientgetv2 - Contar todos los endpoints — el procedimiento de investigación con un solo grep
- Comparación con el listado oficial — ejemplos de API que no aparecen en el listado
- Derivar la especificación de una API no documentada a partir del código fuente — el caso real de
findv3 - Medir el cambio de la API mediante diff entre versiones — serie 5.1 frente a serie 5.2
- Cómo relacionarse con las API no documentadas — «documentada» no es garantía
- Notas prácticas para cuando se profundiza
- Resumen
- Apéndice: tabla de correspondencias de los 137 endpoints (serie 5.2, versión de julio de 2026)
- Referencias
1. La conclusión primero
- La correspondencia entre la URL de la API de Nichi-Rece y el programa del lado del servidor está escrita de forma declarativa en el código fuente, en
lddef/*.ld(los archivos de definición LD). Sin necesidad de leer COBOL, basta con un grep sobre texto plano para enumerar toda la arquitectura de la API. - En la instantánea de la serie 5.2, un total de 137 endpoints están agrupados mediante
bindapien 27 definiciones LD. La página oficial con el listado de especificaciones de la API muestra unos 50, así que en el código fuente existen realmente más del doble de endpoints. - La estructura de las solicitudes y respuestas XML está declarada en
record/*.db, y los nombres de las etiquetas XML son exactamente los nombres de los campos de esa definición. Es decir, incluso en una API no documentada, siguiendo el caminolddef→cobol→recordse puede derivar su especificación. - Al calcular el diff entre versiones con la serie 5.1, se observan 9 endpoints añadidos y 0 eliminados. Las incorporaciones se concentran en la confirmación de elegibilidad en línea (relacionada con la tarjeta MyNumber de seguro médico), lo que permite comprobar de forma empírica que «la API crece con las adaptaciones normativas, y las existentes —al menos entre estas dos series— no desaparecen».
- Una API no documentada no es una «API que no se debe usar». ORCA es de código abierto, y el propio código fuente puede tratarse como especificación de primera mano. El problema no es si existe o no una promesa formal, sino si se cuenta con una operación capaz de detectar por cuenta propia los cambios; ese marco de decisión se organiza en el capítulo 10.
2. Requisitos previos — cómo obtener el código fuente y fijar la versión
El código fuente puede descargarse como un tarball (zip) desde la página oficial de información técnica. Como se actualiza el día 1 de cada mes con la instantánea del día 1 del mes anterior, la regla de oro es registrar siempre el resultado de la investigación junto con la versión utilizada. En este artículo se usan las siguientes versiones.
- Origen:
https://ftp.orca.med.or.jp/pub/src/jma-receipt.r_5_2_branch.zip(tambiénr_5_1_branch.zippara la comparación) - Fecha de obtención: 17-07-2026 (ambas son instantáneas al 1 de julio de 2026)
- Archivo
VERSIONde la serie 5.2: 5.2.0
Si se quiere probar en la práctica, el procedimiento mínimo es el siguiente. Todos los comandos de los capítulos posteriores se ejecutan tomando como punto de partida el directorio donde se descomprime el archivo.
# Decidir el directorio de trabajo y obtener/descomprimir la instantánea de la serie 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
# Registro de la versión. Estos dos datos deben quedar siempre en las notas de la investigación
sha256sum jma-receipt.r_5_2_branch.zip
cat jma-receipt.r_5_2_branch/VERSION # → 5.2.0
# A partir de aquí, los comandos siguientes se ejecutan dentro de este directorio
cd jma-receipt.r_5_2_branch
ls lddef/ | head
Si además se descomprime la serie 5.1 de comparación con el mismo procedimiento, sustituyendo en la URL r_5_2_branch por r_5_1_branch, el diff del capítulo 9 puede ejecutarse tal cual.
Al descomprimir se obtienen unos 8.200 archivos y 237 MB, de los cuales este artículo usa principalmente los tres directorios siguientes.
| Directorio | Contenido | Uso en este artículo |
|---|---|---|
lddef/ |
Definiciones LD (tabla de despacho): 40 archivos .ld (27 de ellos con definiciones bindapi) |
Enumeración completa de los endpoints |
cobol/ |
Lógica de negocio (1.754 programas COBOL, unas 4,06 millones de líneas) | Verificación de la función de cada API y lectura de la implementación |
record/ |
Definiciones de estructura de datos: unas 1.240 (274 de ellas de tipo XML) | Derivación de la estructura de solicitudes y respuestas |
3. El mecanismo de despacho de la API — la URL la determina lddef
Antes de entrar en el tema, conviene reunir aquí los términos que se usarán a partir de este capítulo. Son expresiones propias de ORCA, pero basta con memorizar cinco.
| Término | Significado |
|---|---|
| MONTSUQI | El software base sobre el que corre Nichi-Rece. La página oficial de información técnica de ORCA lo describe como «un monitor OLTP (procesamiento de transacciones en línea) de código abierto que se ejecuta sobre Linux». Es la capa que recibe las peticiones de los clientes de pantalla y de la API, y las pasa al programa COBOL responsable |
Definición LD (lddef/*.ld) |
Un archivo de texto que declara qué programa COBOL procesa cada URL (pantalla o API). Es la tabla de despacho, y a la vez el índice de ese módulo |
bind / bindapi |
Líneas de declaración dentro de una definición LD. bind declara, línea a línea, una pantalla interactiva, y bindapi declara, también línea a línea, el punto de entrada de una API (capítulo 4) |
record/*.db |
La definición de la estructura de datos de las solicitudes, las respuestas y los registros. Los nombres de las etiquetas XML son exactamente los nombres de los campos definidos aquí (capítulo 5) |
| xml2 | El bloque db "xml2" { … } de una definición LD. Reúne las definiciones de registro que ese módulo usa para el intercambio de XML. En muchas API, el nombre de la función de la cabecera COBOL termina en «(xml2)» (apéndice) |
La URL de la API de Nichi-Rece tiene una estructura de dos niveles, «nombre de módulo/nombre de endpoint», como en /api01rv2/patientgetv2. Esta correspondencia aparece tal cual en los archivos de definición LD de lddef/.
Veamos el principio de lddef/api01rv2.ld.
name api01rv2;
bindapi "patientgetv2" "OpenCOBOL" "ORAPI012R1V2";
bindapi "acceptlstv2" "OpenCOBOL" "ORAPI011R1V2";
bindapi "appointlstv2" "OpenCOBOL" "ORAPI014R1V2";
...
La lectura es directa: el nombre de la LD es el primer segmento de la URL, el primer argumento de bindapi es el segundo segmento, y el tercer argumento es el nombre del programa COBOL responsable de procesarla. Es decir, una petición a /api01rv2/patientgetv2 se pasa al programa COBOL ORAPI012R1V2.
flowchart LR
C["Sistema de integración<br/>historia clínica electrónica, etc."] -->|"GET /api01rv2/patientgetv2?id=número de paciente"| M["Servidor de Nichi-Rece<br/>MONTSUQI"]
M -->|"lddef/api01rv2.ld<br/>consulta la definición bindapi"| P["ORAPI012R1V2.CBL<br/>Obtención de información básica del paciente"]
P --> D[("PostgreSQL")]
P -->|"Respuesta XML"| C
Además de esto, en la definición LD también se declaran el conjunto de registros XML usados para construir la respuesta (db "xml2" { ... }) y otros ajustes útiles de conocer (como el tamaño de los arreglos). El archivo LD puede leerse como «el índice de las pantallas, las API y las estructuras de datos que maneja ese módulo».
4. Descubrimiento: la API es «la versión API de las pantallas de trabajo» — bind y bindapi
Si se observan las definiciones LD, hay algo que salta a la vista enseguida: en un mismo archivo conviven bind (pantalla) y bindapi (API). Veamos el módulo de consulta de pacientes, lddef/orca13.ld.
name orca13;
bind "Q01" "OpenCOBOL" "ORCGQ01"; ← pantalla interactiva de consulta de pacientes
bind "Q02" "OpenCOBOL" "ORCGQ02";
...
bindapi "findv3" "OpenCOBOL" "ORCGQAPI01"; ← su versión API
bindapi "findinfv3" "OpenCOBOL" "ORCGQAPI02";
bindapi "foundv3" "OpenCOBOL" "ORCGQAPI03";
Q01 y los que le siguen son los programas de la pantalla de consulta de pacientes que opera el personal administrativo médico, mientras que findv3 y los que le siguen son las API que pertenecen a ese mismo módulo. Incluso el nombre del programa refleja esto: frente a ORCGQ01 (pantalla) está ORCGQAPI01 (API), como si se hubiera insertado «API» en medio del nombre de la serie de pantallas.
Es decir, la API de Nichi-Rece no se diseñó como un servidor de API independiente, sino que se fue añadiendo, módulo de negocio por módulo de negocio, «un punto de entrada que conversa en XML en lugar de la pantalla», sobre la misma base de programas de negocio que las pantallas interactivas. Entender esta estructura permite comprender de forma natural dos cosas.
- Por qué el primer segmento de la URL (
orca13,orca42…) proviene del número de negocio de la pantalla, y por eso, visto solo como API, parece un número sin sentido. - Por qué funciona la estrategia de búsqueda «puede que exista una versión API de cualquier tarea que se pueda hacer en pantalla»: buscar API no documentadas es, en realidad, una tarea muy parecida a enumerar estas «versiones API de las tareas de pantalla».
5. Siguiendo una API de principio a fin — disección de patientgetv2
Antes de contar la arquitectura completa, vamos a seguir una sola API desde la implementación hasta la forma de la respuesta. El caso elegido es el más básico: la obtención de información básica del paciente, /api01rv2/patientgetv2.
(1) Despacho: en lddef/api01rv2.ld, bindapi "patientgetv2" → ORAPI012R1V2. El archivo real es cobol/api01rv2/ORAPI012R1V2.CBL (2.163 líneas). El código fuente COBOL se coloca, en principio, en el mismo directorio que el nombre de la LD, así que con solo leer lddef se puede identificar el archivo de implementación de forma casi mecánica (hay excepciones: por ejemplo, el conjunto de API de orca51 tiene su archivo real en cobol/orca52/. Lo seguro es hacer un find por el nombre del programa).
(2) Cabecera del programa: al principio aparece «Nombre del componente: obtención de información básica del paciente (compatible con la versión 2)», y en el historial de modificaciones que sigue, desde la compatibilidad con el ID de colaboración regional de 2013 hasta la compatibilidad con la receta electrónica de 2022 y la «compatibilidad con la devolución de la validez de la elegibilidad mediante la tarjeta de seguro» de 2024, aparecen alineadas, como una cronología, todas las adaptaciones normativas que ha recibido esta única API. Es más detallado que el «historial de actualizaciones» de las especificaciones oficiales de la API.
(3) Qué datos toca: si se observan las cláusulas COPY (las definiciones comunes que se incorporan) de la WORKING-STORAGE SECTION, se puede saber qué datos maneja esta API. Un extracto:
COPY "CPPTINF.INC". *> Información básica del paciente (tbl_ptinf)
COPY "CPPTNUM.INC". *> Número de paciente
COPY "CPJYURRK.INC". *> Historial de atención
COPY "CPPTCARE-HKNINF.INC". *> Información del seguro de cuidados de larga duración
COPY "CPPTMYNUMBER.INC". *> Número personal MyNumber del paciente
COPY "CPONSHI-KAKU.INC". *> Resultado de la confirmación de elegibilidad en línea
COPY "CPPATIENTXMLV2RES.INC" *> Para la edición de la respuesta
Una API que solo devuelve los datos de un paciente incorpora casi treinta definiciones, que llegan hasta el seguro de cuidados de larga duración, el MyNumber y la confirmación de elegibilidad en línea. Es la prueba material de que el significado de «información básica del paciente» no ha dejado de expandirse junto con el marco normativo.
(4) La forma de la respuesta: la estructura del XML de respuesta está declarada en 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);
...
Quien haya usado la API de Nichi-Rece reconocerá esto de inmediato. Los nombres de las etiquetas XML de la respuesta de la API (Patient_ID, WholeName…) son exactamente los nombres de los campos de esta definición record. Es decir, aquí está el «original» de la tabla de campos que aparece en las especificaciones XML oficiales. Como incluso el tamaño (número de dígitos) de cada campo está escrito, también puede usarse como información de primera mano para diseñar la validación del lado de la integración.
Este recorrido de (1) a (4) es la plantilla del procedimiento de disección de una sola API de Nichi-Rece: identificar el programa con lddef, captar la función y la historia con la cabecera, entender los datos que toca con las cláusulas COPY, y fijar la estructura del mensaje con record. Sin necesidad de leer a fondo la lógica del propio COBOL, con esto ya se reúne la mayor parte de la información necesaria para el trabajo práctico.
6. Contar todos los endpoints — el procedimiento de investigación con un solo grep
Una vez entendido el mecanismo, enumerar el conjunto completo es un trabajo mecánico.
# Enumerar todas las correspondencias endpoint → programa COBOL
grep -H '^[[:space:]]*bindapi' lddef/*.ld
# Número de endpoints por módulo
for f in lddef/*.ld; do
n=$(grep -c '^[[:space:]]*bindapi' "$f"); [ "$n" -gt 0 ] && echo "$f: $n"
done
# Extraer mecánicamente el nombre de función de cada endpoint desde la cabecera COBOL
# (el código fuente está en EUC-JP, así que se usa iconv. La ubicación del
# programa tiene excepciones que no coinciden con el nombre de la LD, así
# que se identifica con 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
El tercer script es largo, así que conviene desglosar qué hace cada etapa de la tubería.
grep '^[[:space:]]*bindapi' "$ld"— extrae de la definición LD solo las líneas de declaración de APIsed 's/"//g; s/;//'— elimina las comillas dobles y el punto y coma final, dejando cuatro palabras separadas por espacios (bindapi/ nombre del endpoint /OpenCOBOL/ nombre del programa)while read -r _ ep _ prog— descarta la primera y la tercera palabra, y se queda solo con el nombre del endpoint y el del programafind cobol -name "$prog.CBL"— busca el archivo real del programa. Como hay excepciones en las que el nombre de la LD no coincide con el del directorio, no conviene fijar la ruta de antemanoiconv -f EUC-JP -t UTF-8— como el código fuente COBOL está en EUC-JP, se convierte para poder leer los comentarios de la cabecera en japonésgrep -m1 'コンポーネント名' | sed …— recoge una sola vez la línea de la cabecera que contiene el nombre del componente y extrae lo que sigue a los dos puntos (el nombre de la función)
Al ejecutarlo, aparecen cuatro columnas separadas por tabulaciones: «módulo / endpoint / programa / nombre de función». Las primeras seis líneas son las siguientes.
api01rv2 patientgetv2 ORAPI012R1V2 患者基本情報取得
api01rv2 acceptlstv2 ORAPI011R1V2 受付一覧
api01rv2 appointlstv2 ORAPI014R1V2 予約一覧 (xml2)
api01rv2 patientlst1v2 ORAPI012R2V2 患者番号一覧取得処理
api01rv2 patientlst2v2 ORAPI012R3V2 患者情報一覧取得
api01rv2 patientlst3v2 ORAPI012R4V2 患者情報一覧取得(氏名指定)
En total resultan 137 líneas. Que en la tercera línea, «予約一覧 (xml2)» (listado de citas), aparezcan espacios duplicados o que los paréntesis mezclen el ancho completo y el ancho medio se debe a que el texto se extrae tal cual de la cabecera. La tabla del apéndice es este mismo resultado ordenado (capítulo 13); en la tabla en español se ha traducido el significado de cada nombre de función, pero conviene saber que, en el código fuente japonés original, esas mismas cabeceras conservan variaciones de notación —espacios, anchura de los paréntesis e incluso algún posible error tipográfico— que no se han corregido en el original.
El resultado del recuento en esta versión es el siguiente (el detalle completo de las 137 entradas está en el apéndice).
| Definición LD (= primer segmento de la URL) | Cantidad | Área de negocio |
|---|---|---|
api01rv2 |
52 | Lectura en general (paciente, recepción, citas, atención médica, hospitalización, datos de formularios) |
api21 |
16 | Registro, verificación y eliminación de actos médicos (ambulatorio/hospitalización) |
orca51 |
12 | Devolución masiva de datos maestros y de pacientes (diagnósticos, puntos, direcciones, etc.) |
orca14 |
10 | Registro de citas + confirmación de elegibilidad en línea (tarjeta MyNumber de seguro médico) |
orca12 |
8 | Registro y actualización de información del paciente (básica/seguro/accidentes laborales/cuidados de larga duración…) |
orca71 |
8 | Funciones adicionales de la confirmación de elegibilidad en línea (imagen OCR, ayuda médica, etc.) |
orca31 |
4 | Registro de ingreso/alta y cuentas de hospitalización |
orca13 / orca22 / orca42 / orca44 |
2–3 cada uno | Consulta de pacientes / registro de diagnósticos / generación e impresión del recibo de facturación / generación de datos electrónicos del recibo |
| Otros (recepción, cobros, impresión de formularios, administración de usuarios, inicio de sesión, etc.) | Resto | ─ |
| Total (27 módulos) | 137 | ─ |
Mientras que en la lectura (api01rv2) se concentra cerca de un 40 %, las operaciones de actualización están repartidas por módulo de negocio (paciente = orca12, recepción = orca11, actos médicos = api21…). La estructura de «versión API de las tareas de pantalla» del capítulo 4 se refleja tal cual en esta distribución.
Otro punto a destacar es que, más que API de negocio, se mezclan API de funciones de infraestructura, como session_start (autenticación de inicio de sesión) del módulo session o print (impresión) de orca00. Por más que se repase el listado de las especificaciones oficiales, no se puede notar la existencia de esta capa.
Los endpoints individuales están en la tabla de correspondencias de las 137 entradas del apéndice. La forma básica de buscar es estimar el módulo objetivo a partir de la cantidad de la tabla anterior y luego recorrer el apéndice por nombre de módulo.
7. Comparación con el listado oficial — ejemplos de API que no aparecen en el listado
A continuación, cotejamos las API que aparecen en la página del listado oficial «Especificación de la API de Nichi-Rece» (unas 50) con las 137 extraídas del código fuente. Al hacerlo, se ve que existen en el código fuente muchos endpoints que no figuran en la página del listado. A continuación se muestran ejemplos por área funcional (todos los nombres de función se han verificado a partir del campo de nombre del componente de la cabecera COBOL).
| Área | Ejemplo de endpoint | Programa responsable | Función según la cabecera |
|---|---|---|---|
| Búsqueda de pacientes | /orca13/findv3 |
ORCGQAPI01 | Consulta de pacientes |
| Trabajo de facturación | /orca42/receiptmakev3 |
ORAPI042R1V3 | Generación del recibo de facturación (xml2) |
| Trabajo de facturación | /orca44/receiptdatamakev3 |
ORAPI044R1V3 | Generación de datos electrónicos del recibo (xml2) |
| Trabajo de verificación | /orca41/datacheckv3 |
ORCGDAPI01 | Verificación de datos |
| Administración de facturación | /orca43/claimedmanagementv3 |
ORAPI043R1V3 | Registro de administración de facturación |
| Infraestructura | /session/session_start |
ORCGSESSTART | Autenticación de inicio de sesión |
Es decir, no solo existe una integración diaria como la recepción o la información de pacientes, sino que, como implementación, existe un conjunto de API capaz de impulsar desde fuera el trabajo mensual de facturación (generación → verificación → salida de datos electrónicos del recibo → administración de facturación). Es una capa que no se percibe si solo se conoce la integración con la historia clínica electrónica.
Aquí hay dos advertencias importantes.
- No concluir de inmediato que «no está en el listado» equivale a «no documentado». Por ejemplo, la obtención de datos de formularios (
formdatagetv2) está documentada en la documentación del lado de PushAPI, así que la página del listado no garantiza cubrir todas las API. Solo se debería decir «no se encuentra documentación» después de haber revisado también las páginas de documentación individuales y la búsqueda dentro del sitio (la tabla anterior es el resultado de haber hecho esa revisión, pero aun así no constituye una prueba completa de que «no existe documentación publicada»). - Las implementaciones de terceros también sirven como material de contraste. Un proyecto de código abierto como la biblioteca orca-api, que usa la API de Nichi-Rece desde Ruby, resulta útil como catálogo de referencia de los endpoints que se han usado en la práctica.
8. Derivar la especificación de una API no documentada a partir del código fuente — el caso real de findv3
Aunque se sepa que «existen API que no aparecen en el listado», si no se conoce la forma de la solicitud, tampoco se puede investigar. Aquí es donde entra en juego la plantilla del capítulo 5. Probemos con findv3 (consulta de pacientes).
La estructura de la solicitud está en record/xml_findv3req.db (extracto).
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];
...
Solo con leer la definición se entiende que se trata de una API de búsqueda de pacientes bastante avanzada, que permite combinar un rango de fecha de nacimiento, sexo, un rango de fecha de última visita, médico responsable, departamento clínico, categoría de defunción, un rango de números de paciente y nombre (con múltiples valores), entre otros. Las API de búsqueda de pacientes que figuran en el listado oficial (patientlst1v2 y siguientes) se centran sobre todo en búsquedas de una sola función, como el rango de números de paciente o el nombre, así que esta API, capaz de una búsqueda por condiciones combinadas equivalente a la consulta de pacientes en pantalla, es claramente superior en funcionalidad.
La estructura de la respuesta está, del mismo modo, en record/xml_findv3res.db, y si se lee el COBOL correspondiente (ORCGQAPI01.CBL) también se puede verificar el comportamiento detallado (como el límite del número de resultados o el orden). En ORCA, cuyo código fuente es público, una «API no documentada» es, en realidad, «una API para la que se puede redactar documentación por cuenta propia».
Hasta qué punto se puede confiar en producción en la especificación así derivada: ese es el tema del siguiente capítulo.
9. Medir el cambio de la API mediante diff entre versiones — serie 5.1 frente a serie 5.2
Antes de discutir el riesgo de las API no documentadas, conviene medir de forma empírica «cuánto cambia realmente la API». Este es el resultado de aplicar diff a las definiciones bindapi frente a la instantánea de la serie 5.1 publicada el mismo día:
| Elemento comparado | Resultado |
|---|---|
| Total de endpoints de la serie 5.1 | 128 |
| Total de endpoints de la serie 5.2 | 137 |
| Añadidos en la serie 5.2 | 9 |
| Eliminados en la serie 5.2 | 0 |
El desglose de las 9 incorporaciones es el siguiente: 6 relacionadas con la confirmación de elegibilidad en línea (onlinequa10, onlinequa11, onlinequaapp1 a 3, onlineaidlstreq1), el registro de notas de paciente (patientmemomodv2), la devolución masiva de códigos de entrada (inputcodelstv3) y la obtención de información de códigos de entrada y de atención médica (medicationgetv2), 9 en total. Se ve con claridad que la adaptación normativa (en torno a la tarjeta MyNumber de seguro médico) se manifiesta como una ampliación de la API.
De esta observación se pueden extraer los dos puntos siguientes.
- La «superficie» de endpoints es estable (cero eliminaciones entre estas dos series). Lo que hay que temer no es tanto la desaparición como la adición de campos y el cambio de comportamiento en cada API concreta (cambios como los del historial de modificaciones que vimos en el capítulo 5).
- Como el código fuente se publica cada mes, este tipo de detección de cambios se puede automatizar. Si se mantiene un sistema de integración, con solo aplicar diff a
lddefyrecordde la instantánea mensual ya se obtiene una red de alerta temprana sobre lo que va a cambiar en la próxima actualización de versión. Es un medio de mantenimiento propio de la publicación del código fuente, difícil de conseguir con otros sistemas de facturación médica.
10. Cómo relacionarse con las API no documentadas — «documentada» no es garantía
Ante todo, dejemos clara la premisa. El contrato de licencia de código abierto de la Asociación Médica Japonesa, en el artículo 5 del capítulo 2, declara sin garantía todo el programa respecto a su funcionamiento sin problemas o a la ausencia de defectos. Esto se aplica por igual a las API documentadas. Tampoco existe, en cuanto a la compatibilidad, ninguna disposición explícita en la documentación oficial que prometa «no cambiar» las API documentadas; de hecho, como vimos en el capítulo 5, incluso patientgetv2, representante de las API documentadas, ha seguido recibiendo campos adicionales cada vez que hubo una adaptación normativa.
Es decir, la diferencia entre «documentada» y «no documentada» no reside en si hay o no garantía. La diferencia real, llevada al extremo, se reduce solo a los dos puntos siguientes.
- Si el cambio tiende a reflejarse como una actualización de la documentación oficial (el cambio de una API no documentada no se ve a menos que se lea el código fuente)
- Si es más fácil llevarlo a la conversación con el proveedor de soporte
Y en ORCA el código fuente se publica cada mes. La diferencia del primer punto se puede cubrir con la vigilancia del diff del código fuente. El código fuente es la especificación de primera mano, y la documentación no es más que un extracto de ella: esta es la actitud correcta ante el código abierto. Cuando la documentación y el código fuente no coinciden, lo que realmente se ejecuta es el código fuente.
Dicho esto, dado que se trata de un sistema directamente ligado al dinero, como es la facturación de recibos médicos, con independencia de si está documentada o no, toda API que se incorpore al flujo de producción debería ir acompañada de la siguiente operación.
| Qué hacer | Objetivo |
|---|---|
| Fijar y registrar la versión (fecha de obtención, SHA-256, correspondencia con el paquete en producción) | Permitir reproducir en cualquier momento los resultados de la investigación y la verificación. En entornos donde el proveedor de soporte aplica parches propios, verificar también la diferencia con el código fuente público |
Vigilar el diff de la instantánea mensual (lddef/record + el COBOL responsable de las API que se usan) |
Detección temprana de cambios. Los cambios de interfaz aparecen en lddef/record, y los cambios de comportamiento en el lado COBOL. Como el cambio de una API no documentada no aparece en la documentación oficial, el diff del código fuente se convierte en el medio de detección real |
| Incorporar la verificación de regresión en un entorno de pruebas al procedimiento de actualización de versión | Prevenir que algo «se rompa en silencio» en el mes de la revisión |
| Redactar y mantener documentación propia de la API para las API no documentadas | Convertir en un activo del equipo la especificación derivada con el método del capítulo 8 |
| Compartir la configuración de uso con el proveedor de soporte | Agilizar el aislamiento del problema en caso de incidencia |
Hay una advertencia operativa. Como la instantánea publicada refleja el contenido al día 1 del mes anterior, si se aplica primero la actualización del paquete en producción, no se podrá leer el código fuente correspondiente hasta después de haberla aplicado. Para que esta vigilancia funcione como alerta temprana, es necesario invertir el orden: actualizar la versión solo después de esperar la publicación y la verificación del código fuente correspondiente.
Dicho de otro modo, una organización que no pueda sostener esta operación no está a salvo aunque use exclusivamente API documentadas. Adoptar como núcleo del negocio un software de código abierto sin garantía significa precisamente esto.
11. Notas prácticas para cuando se profundiza
Estos son los pequeños tropiezos típicos de la fase en la que se profundiza en una API concreta a partir del código fuente.
- La codificación de caracteres es EUC-JP. El código fuente COBOL y sus comentarios están en EUC-JP, así que hay que pasarlos por
iconv -f EUC-JP -t UTF-8antes de leerlos. El documento de licencia (doc/license.html) está en ISO-2022-JP. Tampocogrepencuentra coincidencias con palabras clave en japonés si no se intercalaiconv. - Aprenderse la convención de nombres de programa acelera el trabajo. La forma básica de las API es
ORAPI+ número de negocio +R(referencia)/S(actualización) + versión (V2/V3), y la versión API de las de pantalla esORCG〜API〜. El código fuente COBOL se encuentra, en principio, bajocobol/<nombre de LD>/, pero hay excepciones (el archivo real de las API deorca51está encobol/orca52/), así que ante la duda conviene hacerfindpor el nombre del programa. - Hay dos tipos de punto de entrada: GET y POST+XML. Se puede estimar que una API sin un registro de solicitud (
~req) en el bloquedb "xml2"de la definición LD (por ejemplo,patientgetv2) es de tipo parámetros GET, y que la que sí lo tiene es de tipo POST+XML. La confirmación definitiva se hace en el procesamiento de entrada del lado COBOL. - El significado de los campos de datos se determina cotejando
record/con el documento oficial de definición de tablas. El «original» de los campos de respuesta esrecord/*.db, y el significado del lado de la base de datos está en el documento oficial de definición de tablas. Poner ambos uno al lado del otro aumenta la fiabilidad. Además, en algunas definiciones coexiste una versión.db.weborcapara WebORCA, cuyos límites de arreglo, entre otras cosas, difieren (por ejemplo,xml_acceptlstv2respasa de 1.000 a 1.500 registros). En el diseño de una integración con WebORCA hay que revisar esa versión. - Verificar el funcionamiento en un entorno de pruebas. Usando el servidor de prueba oficial o un entorno Docker de la comunidad, se puede llamar a la API y verificarla sin tocar el sistema de facturación médica real. Está terminantemente prohibido «probar» directamente en la máquina de producción.
12. Resumen
- La arquitectura completa de la API de Nichi-Rece está condensada en las definiciones
bindapidelddef/*.ld, y con un simple grep se pueden enumerar los 137 endpoints (serie 5.2, versión de julio de 2026). - La verdadera naturaleza de la API de Nichi-Rece es ser «la versión API de las tareas de pantalla».
bind(pantalla) ybindapi(API) conviven en la misma definición LD, y el nombre del módulo de la URL proviene del número de negocio de la pantalla. - Una sola API se puede diseccionar en el orden
lddef(despacho) → cabecera COBOL (función e historia) → cláusulas COPY (datos que toca) →record/*.db(el original de la estructura XML). El nombre de la etiqueta XML es exactamente el nombre del campo de la definiciónrecord. - La diferencia entre el listado oficial (unas 50) y el código fuente (137) incluye un conjunto de API capaz de impulsar tareas mensuales como la generación del recibo de facturación, la generación de datos electrónicos del recibo o la verificación de datos. Sin embargo, no hay que concluir de inmediato que «no está en el listado» equivale a «no documentado»; hay que verificarlo caso por caso.
- En la medición del diff con la serie 5.1 se observan 9 incorporaciones (centradas en la confirmación de elegibilidad en línea) y 0 eliminaciones. El diff de la instantánea mensual puede usarse como red de alerta temprana para el mantenimiento de la integración.
- El contrato de licencia de uso declara explícitamente que no hay garantía, incluidas las API documentadas: «documentada» no equivale a «segura». El código fuente es la especificación de primera mano. Con independencia de si está documentada o no, si se va a usar en producción hay que combinar la fijación de versión, la vigilancia mensual del diff, la verificación de regresión y la elaboración de documentación propia.
El orden seguido en este artículo, entrar por el código fuente en lugar de por las especificaciones, es un método de investigación aplicable, más allá de ORCA, a cualquier «sistema de negocio longevo en el que la documentación no ha seguido el ritmo de la implementación». Por fortuna, como el código fuente de ORCA es público, este método se puede practicar de forma legal y, además, siempre con la versión más reciente cada mes.
13. Apéndice: tabla de correspondencias de los 137 endpoints (serie 5.2, versión de julio de 2026)
Estos son todos los endpoints extraídos mecánicamente de las definiciones bindapi de lddef/*.ld. El nombre de función de cada fila se ha traducido a partir del contenido literal del campo de nombre del componente de la cabecera de cada programa COBOL. En el código fuente japonés original, ese campo conserva variaciones de notación, paréntesis de ancho completo y grafías que parecen erratas, todo tal cual (por ejemplo, la palabra japonesa para «simulación» aparece deletreada de forma no estándar, y el nombre de endpoint medicatonmodv2 aparece sin la «i» de medicationmodv2); estas peculiaridades no son errores de transcripción de KomuraSoft, y por eso los nombres de endpoint y de programa se han mantenido literales. Esta tabla es el registro de un hecho de la instantánea de la serie 5.2 al 1 de julio de 2026, y no indica si cada endpoint puede usarse ni cuál es su estado de soporte.
La tabla está ordenada por módulo (el primer segmento de la URL). Para encontrar rápidamente la API buscada, conviene acotar en el siguiente orden. Si se introduce el nombre del módulo en la búsqueda de la página del navegador (Ctrl+F), se salta directamente al principio de ese bloque.
| Qué se busca | Módulo a consultar |
|---|---|
| Obtener información (paciente, recepción, citas, atención médica, hospitalización, datos de formularios) | /api01rv2/ |
| Registrar, verificar o eliminar actos médicos | /api21/ |
| Obtener de forma masiva datos maestros o de pacientes | /orca51/ |
| Registrar o actualizar información de pacientes | /orca12/ |
| Confirmación de elegibilidad en línea (tarjeta MyNumber de seguro médico) | /orca14/ · /orca71/ |
| Trabajo mensual de facturación (verificación, generación, impresión, datos electrónicos, administración de facturación) | /orca41/ · /orca42/ · /orca43/ · /orca44/ |
| Ingreso/alta y cuentas de hospitalización | /orca31/ · /orca32/ · /orca36/ |
| Funciones de infraestructura como inicio de sesión o impresión | /session/ · /orca00/ |
| URL | Programa COBOL | Función según la cabecera |
|---|---|---|
/api01rv2/patientgetv2 |
ORAPI012R1V2 | Obtención de información básica del paciente |
/api01rv2/acceptlstv2 |
ORAPI011R1V2 | Listado de recepciones |
/api01rv2/appointlstv2 |
ORAPI014R1V2 | Listado de citas (xml2) |
/api01rv2/patientlst1v2 |
ORAPI012R2V2 | Proceso de obtención del listado de números de paciente |
/api01rv2/patientlst2v2 |
ORAPI012R3V2 | Obtención del listado de información de pacientes |
/api01rv2/patientlst3v2 |
ORAPI012R4V2 | Obtención del listado de información de pacientes (por nombre) |
/api01rv2/system01lstv2 |
ORAPI101R1V2 | Administración del sistema: proceso de obtención del listado de departamentos clínicos y médicos |
/api01rv2/medicalgetv2 |
ORAPI021R1V2 | Devolución de actos médicos 1 (xml2) |
/api01rv2/diseasegetv2 |
ORAPI022R1V2 | Devolución de diagnósticos del paciente |
/api01rv2/appointlst2v2 |
ORAPI014R2V2 | Estado de las citas del paciente (xml2) |
/api01rv2/acsimulatev2 |
ORAPI023R1V2 | Simulación del importe a facturar |
/api01rv2/visitptlstv2 |
ORAPI021R2V2 | Listado de pacientes que acuden al centro (xml2) |
/api01rv2/hsconfbasev2 |
ORAPI031RC1V2 | Obtención de información básica de hospitalización |
/api01rv2/hsconfwardv2 |
ORAPI031RC2V2 | Obtención de información de la sala de hospitalización |
/api01rv2/tmedicalgetv2 |
ORAPI021R3V2 | Listado de datos intermedios (xml2) |
/api01rv2/hsmealv2 |
ORAPI032R1V2 | Obtención de información de comidas de hospitalización |
/api01rv2/insprogetv2 |
ORAPI105R1V2 | Listado del maestro de aseguradoras (xml2) |
/api01rv2/hsptevalv2 |
ORAPI032R2V2 | Obtención de la categoría médica de hospitalización y la puntuación ADL |
/api01rv2/hsptinfv2 |
ORAPI031R1V2 | Obtención de datos básicos del paciente hospitalizado |
/api01rv2/hsacsimulatev2 |
ORAPI034R1V2 | Cálculo provisional al alta |
/api01rv2/incomeinfv2 |
ORAPI023R2V2 | Obtención de información de cobros |
/api01rv2/systeminfv2 |
ORAPI000R1V2 | Obtención de información del sistema |
/api01rv2/insuranceinf1v2 |
ORAPI012R5V2 | Obtención del maestro de números de seguro (tipo de seguro/subsidio público) y de la categoría de ayuda |
/api01rv2/receiptinf1v2 |
ORAPI042R1V2 | Obtención de información del recibo de facturación (número de hojas y puntos) |
/api01rv2/claimfrontv2 |
ORAPICLAIMR1V2 | Envío de recepción CLAIM (xml2) |
/api01rv2/claimaccountv2 |
ORAPICLAIMR2V2 | Envío de confirmación de facturación CLAIM (xml2) |
/api01rv2/formdatagetv2 |
ORAPI001R1V2 | Obtención de datos de formularios impresos |
/api01rv2/contraindicationcheckv2 |
ORAPI021R4V2 | Devolución de información de medicamentos contraindicados en combinación (xml2) |
/api01rv2/okusurigetv2 |
ORAPIRELR1V2 | Información de la cartilla de medicación del paciente (xml2) |
/api01rv2/okusuriputv2 |
ORAPIRELR2V2 | Información de la cartilla de medicación del paciente (xml2) |
/api01rv2/imagegetv2 |
ORAPI000R2V2 | Obtención de datos de imagen |
/api01rv2/patientlst6v2 |
ORAPI012R6V2 | Obtención de la combinación de seguros del paciente |
/api01rv2/prescriptionv2 |
ORAPI001R2V2 | Impresión de la receta médica |
/api01rv2/medicinenotebookv2 |
ORAPI001R3V2 | Impresión de la cartilla de medicación |
/api01rv2/subjectiveslstv2 |
ORAPI025R1V2 | Obtención de información de notas detalladas de síntomas (obtención) (xml2) |
/api01rv2/system01dailyv2 |
ORAPI101R2V2 | Administración del sistema: obtención de información de configuración de registro de pacientes y actos médicos |
/api01rv2/pusheventgetv2 |
ORAPI000R3V2 | Obtención de notificaciones Push |
/api01rv2/apiversiongetv2 |
ORAPI000R4V2 | Obtención de la versión de la API |
/api01rv2/karteno1v2 |
ORAPI001R4V2 | Impresión de la historia clínica hoja n.º 1 (ambulatorio) |
/api01rv2/karteno1hv2 |
ORAPI001R5V2 | Impresión de la historia clínica hoja n.º 1 (hospitalización) |
/api01rv2/karteno3v2 |
ORAPI001R6V2 | Impresión de la historia clínica hoja n.º 3 (ambulatorio) |
/api01rv2/karteno3hv2 |
ORAPI001R7V2 | Impresión de la historia clínica hoja n.º 3 (hospitalización) |
/api01rv2/patientlst7v2 |
ORAPI012R7V2 | Obtención del contenido de la nota del paciente |
/api01rv2/invoicereceiptv2 |
ORAPI001R8V2 | Factura y recibo de pago ambulatorio |
/api01rv2/statementv2 |
ORAPI001R9V2 | Desglose de gastos de consulta ambulatoria |
/api01rv2/invoicereceipthv2 |
ORAPI001R10V2 | Factura y recibo de pago de hospitalización |
/api01rv2/statementhv2 |
ORAPI001R11V2 | Desglose de gastos de hospitalización |
/api01rv2/onlinedruggetv2 |
ORAPIONSHIR1V2 | API: proceso de obtención de información de medicamentos de la confirmación de elegibilidad |
/api01rv2/onlinespecgetv2 |
ORAPIONSHIR2V2 | API: proceso de obtención de información del chequeo específico de la confirmación de elegibilidad |
/api01rv2/patientlst8v2 |
ORAPI012R8V2 | Obtención del historial de apellidos anteriores |
/api01rv2/onlinemedgetv2 |
ORAPIONSHIR3V2 | API: proceso de obtención de información de atención médica de la confirmación de elegibilidad |
/api01rv2/medicationgetv2 |
ORAPI102R1V2 | Obtención de información de códigos de entrada y de atención médica |
/api21/medicalmodv2 |
ORAPI021S1V2 | Registro de actos médicos (xml2) |
/api21/medicalmodv31 |
ORAPI021S1V3 | Devolución de la tarifa de consulta de actos médicos (entrada integrada) |
/api21/medicalmodv32 |
ORAPI021S2V3 | Verificación del contenido de los actos médicos (entrada integrada) |
/api21/medicalmodv33 |
ORAPI021S3V3 | Registro de actos médicos (entrada integrada) |
/api21/medicalmodv34 |
ORAPI021S4V3 | Eliminación de actos médicos (entrada integrada) |
/api21/claimreceivev2 |
ORAPICLAIM21S1V2 | Registro de actos médicos CLAIM (xml2) |
/api21/medicalmodv35 |
ORAPI021S5V3 | Registro de la fecha de inicio de rehabilitación y comentarios de actos médicos |
/api21/medicalmodv36 |
ORAPI021S6V3 | Proceso de cambio masivo de seguro en actos médicos |
/api21/tmedicalmodv2 |
ORAPI021S2V2 | Obtención y eliminación de datos intermedios (xml2) |
/api21/medicalmodv37 |
ORAPI021S7V3 | Proceso de liberación del control de exclusión |
/api21/medicalmodav31 |
ORAPI021NS1V3 | Devolución inicial de actos médicos de hospitalización (entrada integrada) |
/api21/medicalmodav32 |
ORAPI021NS2V3 | Verificación del contenido de actos médicos de hospitalización |
/api21/medicalmodav33 |
ORAPI021NS3V3 | Registro de actos médicos de hospitalización (entrada integrada) |
/api21/medicalmodav34 |
ORAPI021NS4V3 | Eliminación de actos médicos de hospitalización (entrada integrada) |
/api21/medicalmodv23 |
ORAPI021S3V2 | Proceso de registro de la fecha de cálculo de primera consulta |
/api21/medicalmodav35 |
ORAPI021NS5V3 | Actualización de la tarifa de dispensación en hospitalización de actos médicos (entrada integrada) |
/orca00/print |
ORCGMPRT | Módulo de API de impresión |
/orca01/reprintv3 |
ORAPI001R1V3 | Obtención de reimpresión (xml2) |
/orca02/jobmanagev3 |
ORAPI002R1V3 | Devolución del listado de trabajos (xml2) |
/orca06/patientmemomodv2 |
ORAPI006S1V2 | Proceso de registro del contenido de la nota del paciente |
/orca07/statisticsdatav3 |
ORAPI007R1V3 | Pantalla de selección de salida CSV (obtención de datos estadísticos diarios y mensuales) |
/orca101/manageusersv2 |
ORCGWAPI01 | Administración de usuarios |
/orca102/medicatonmodv2 |
ORAPI102S1V2 | Registro del maestro de puntos de usuario (xml) |
/orca11/acceptmodv2 |
ORAPI011S1V2 | Registro de recepción (xml2) |
/orca12/patientmodv2 |
ORAPI012S1V2 | Configuración de información básica del paciente (registro/eliminación) (xml2) |
/orca12/patientmodv31 |
ORAPI012S1V3 | Configuración de información básica del paciente (registro/eliminación) (V3) |
/orca12/patientmodv32 |
ORAPI012S2V3 | Configuración de información de seguro y ayuda pública del paciente (registro/eliminación) (V3) |
/orca12/patientmodv33 |
ORAPI012S3V3 | Configuración de accidentes laborales y seguro obligatorio de automóvil del paciente (registro/eliminación) (V3) |
/orca12/patientmodv34 |
ORAPI012S4V3 | Configuración de información del contribuyente, observaciones especiales e información individual del paciente |
/orca12/patientmodv35 |
ORAPI012S5V3 | Configuración de la información del importe cubierto por ayuda pública del paciente |
/orca12/patientmodv36 |
ORAPI012S6V3 | Configuración de la información del seguro de cuidados de larga duración y de la certificación de dependencia del paciente |
/orca12/patientmodv37 |
ORAPI012S7V3 | Configuración de medicamentos contraindicados del paciente |
/orca13/findv3 |
ORCGQAPI01 | Consulta de pacientes |
/orca13/findinfv3 |
ORCGQAPI02 | Consulta de pacientes |
/orca13/foundv3 |
ORCGQAPI03 | Consulta de pacientes (impresión) |
/orca14/appointmodv2 |
ORAPI014S1V2 | Registro de citas (xml2) |
/orca14/onlinequa1 |
ORAPION001R1V2 | Confirmación de elegibilidad en línea |
/orca14/onlinequa2 |
ORAPION002R1V2 | Proceso de registro y actualización de la confirmación de elegibilidad por reconocimiento facial |
/orca14/onlinequa3 |
ORAPION003R1V2 | Proceso de registro y actualización de la confirmación de elegibilidad con tarjeta de seguro |
/orca14/onlinedrug1 |
ORAPION004R1V2 | Proceso de registro y actualización de la información de medicamentos de la confirmación de elegibilidad |
/orca14/onlinespec1 |
ORAPION005R1V2 | Proceso de registro y actualización del chequeo específico de la confirmación de elegibilidad |
/orca14/onlinerefall1 |
ORAPION006R1V2 | Registro masivo de números de consulta |
/orca14/onlinequa4 |
ORAPION007R1V2 | Proceso de registro y actualización de la confirmación de ayuda pública |
/orca14/onlinequaapp1 |
ORAPION008R1V2 | Proceso de consulta masiva de confirmación de elegibilidad de pacientes con cita |
/orca14/onlinequaapp2 |
ORAPION009R1V2 | Proceso de consulta masiva de confirmación de elegibilidad de pacientes con cita |
/orca21/medicalsetv2 |
ORAPI021SETV2 | Registro de conjuntos de actos médicos (xml2) |
/orca22/diseasev2 |
ORAPI022R1V3 | Registro de diagnósticos del paciente (xml2) |
/orca22/diseasev3 |
ORAPI022R2V3 | Registro de diagnósticos del paciente (xml2) |
/orca23/incomev3 |
ORCGSAPI01 | Cobros (listado de facturación) |
/orca25/subjectivesv2 |
ORAPI025S1V2 | Registro de comentarios de notas detalladas de síntomas (xml2) |
/orca31/hsptinfmodv2 |
ORCGI0API01 | Registro de hospitalización |
/orca31/birthdeliveryv2 |
ORCGI0API02 | Subsidio único por parto y crianza |
/orca31/hsacctmodv2 |
ORCGI4API02 | Registro de cuentas de hospitalización |
/orca31/hspmmv2 |
ORCGI4API03 | Devolución del último mes de atención de las cuentas de hospitalización |
/orca32/hsptevalmodv2 |
ORCGI4API01 | Registro de categoría médica y puntuación ADL |
/orca36/hsfindv3 |
ORCGI2API01 | Consulta de pacientes hospitalizados |
/orca41/datacheckv3 |
ORCGDAPI01 | Verificación de datos |
/orca42/receiptmakev3 |
ORAPI042R1V3 | Generación del recibo de facturación (xml2) |
/orca42/receiptprintv3 |
ORAPI042R2V3 | Impresión del recibo de facturación (xml2) |
/orca42/unclaimedv3 |
ORAPI042R3V3 | Configuración de no facturado |
/orca43/claimedmanagementv3 |
ORAPI043R1V3 | Registro de administración de facturación |
/orca44/receiptdatamakev3 |
ORAPI044R1V3 | Generación de datos electrónicos del recibo de facturación (xml2) |
/orca44/receiptdatacheckmakev3 |
ORAPI044R2V3 | Generación de datos electrónicos de verificación del recibo de facturación (xml2) |
/orca44/receiptdatapatientmakev3 |
ORAPI044R3V3 | Generación individual de datos electrónicos del recibo de facturación (xml2) |
/orca51/diseasemasterlstv3 |
ORAPI052R1V3 | Devolución del maestro de diagnósticos (xml2) |
/orca51/medicationmasterlstv3 |
ORAPI052R2V3 | Devolución del maestro de puntos (xml2) |
/orca51/stock1v2 |
ORAPI052R3V3 | Devolución de información de gestión de inventario (xml2) |
/orca51/patientbasisallv3 |
ORAPI052R4V3 | Devolución masiva de información básica de pacientes (xml2) |
/orca51/patientdiseaseallv3 |
ORAPI052R5V3 | Devolución del maestro de diagnósticos de pacientes (xml2) |
/orca51/masterlastupdatev3 |
ORAPI052R6V3 | Devolución de la fecha de última actualización del maestro |
/orca51/patientmedicalallv3 |
ORAPI052R7V3 | Devolución masiva de actos médicos de pacientes (xml2) |
/orca51/addressmasterlstv3 |
ORAPI052R8V3 | Devolución del maestro de direcciones (xml2) |
/orca51/tempmedicaladdv3 |
ORAPI051R1V3 | Registro masivo de datos intermedios (xml2) |
/orca51/statisticsformv3 |
ORAPI051R2V3 | Obtención del listado de estadísticas diarias y mensuales (xml2) |
/orca51/masterexportv3 |
ORAPI052R9V3 | Obtención del maestro |
/orca51/inputcodelstv3 |
ORAPI052R10V3 | Devolución masiva de códigos de entrada (xml2) |
/orca71/onshicond |
ORAPIONCONDR1V2 | Confirmación de elegibilidad en línea |
/orca71/onlineimg1 |
ORAPION011R1V2 | Proceso de registro de imagen OCR de la tarjeta de seguro para la confirmación de elegibilidad |
/orca71/onlinemedical1 |
ORAPION010R1V2 | Proceso de registro y actualización de información de atención médica de la confirmación de elegibilidad |
/orca71/onlinemedical2 |
ORAPION012R1V2 | Proceso de registro y actualización de información de atención odontológica de la confirmación de elegibilidad |
/orca71/onlineaidlstreq1 |
ORAPION013R1V2 | Proceso de registro del número de emisión de ayuda médica de la confirmación de elegibilidad |
/orca71/onlinequaapp3 |
ORAPION014R1V2 | Proceso de consulta masiva de confirmación de elegibilidad de pacientes de atención domiciliaria |
/orca71/onlinequa10 |
ORAPION015R1V2 | Proceso de registro y actualización de información de subsidio de gastos médicos |
/orca71/onlinequa11 |
ORAPION016R1V2 | Proceso de registro y actualización de atención domiciliaria/atención médica en línea |
/session/session_start |
ORCGSESSTART | Autenticación de inicio de sesión |
14. Referencias
- Información técnica - Nichi-i Hyōjun Recept Software - ORCA Project (publicación del código fuente)
- Especificación de la API de Nichi-i Hyōjun Recept Software - ORCA Project
- API de Nichi-i Hyōjun Recept Software - ORCA Project
- orca-api: biblioteca Ruby para la API de Nichi-i Hyōjun Recept Software (GitHub)
- Código fuente del núcleo de Nichi-Rece, series 5.2 y 5.1 (ambas instantáneas publicadas en julio de 2026):
lddef/api01rv2.ld/lddef/orca13.ld/cobol/api01rv2/ORAPI012R1V2.CBL/record/xml_patientinfov2res.db/record/xml_findv3req.db, entre otros — todas las mediciones y citas del cuerpo del artículo se basan en esta instantánea
Artículos relacionados
Artículos recientes con las mismas etiquetas para profundizar en temas cercanos.
Qué dicen los 8 dígitos del número de asegurador — el número de clasificación legal, el número de prefectura y el número de verificación leídos desde la implementación del sistema de facturación médica
El número de asegurador (8 dígitos) se compone de clasificación legal, prefectura, número propio y verificación. Lo verificamos con las d...
¿Qué cambia la receta electrónica en el sistema de facturación médica? — Cómo aborda ORCA la receta electrónica, leído desde el código fuente
Qué necesita el sistema de facturación médica para la receta electrónica: el diseño de tablas de ORCA, la integración CSV y cómo llega la...
¿Dónde se producen el ajuste y la devolución? — Desglosamos la lógica de verificación de recibos de facturación a partir del código fuente de ORCA y los materiales públicos
¿Dónde se ajustan y devuelven los recibos? Analizamos, con código y materiales públicos, la verificación multinivel de ORCA y del organis...
Qué sucede al presentar la tarjeta MyNumber de seguro médico — cómo leer la integración entre la confirmación de elegibilidad en línea y el sistema de facturación médica en el código fuente de ORCA
Cómo llega la información del seguro al sistema de facturación tras la tarjeta MyNumber, según el flujo de elegibilidad en línea y el cód...
ORCA (Nichirese) no es una historia clínica electrónica — la estructura de los sistemas médicos y del sistema de facturación desde la perspectiva de un ingeniero
ORCA (Nichirese) no es una historia clínica electrónica, sino un sistema de facturación médica. Se analiza, desde la perspectiva de un in...
Temas relacionados
Estas páginas sitúan el tema en un contexto más amplio de servicios y decisiones.
Temas técnicos de Windows
Portal sobre desarrollo de Windows, investigación de fallos y aprovechamiento de activos existentes.
Servicios relacionados con este tema
El artículo está directamente relacionado con los siguientes servicios.
Consultoría técnica y revisión de diseño
La elección del método de integración con ORCA y la investigación de comportamientos que no figuran en las especificaciones son temas clásicos de la consultoría técnica y la revisión de diseño.
Reutilización y migración de activos existentes
La lectura del código fuente COBOL y el diseño de la integración están directamente conectados con los proyectos de migración e integración que aprovechan activos heredados.
Preguntas frecuentes
Preguntas habituales en las consultas sobre el tema del artículo.
- ¿Cuántos endpoints tiene en total la API de Nichi-Rece?
- La página oficial con el listado de especificaciones de la API muestra unos 50, pero si se cuentan los archivos de definición LD del código fuente publicado (serie 5.2, instantánea de julio de 2026), los endpoints agrupados mediante bindapi suman 137. Parte de esa diferencia corresponde a funciones como los formularios impresos, que están documentadas en otra página, así que no se puede concluir de inmediato que «no estar en el listado» equivalga a «no estar documentado». Aun así, contar desde el lado del código fuente permite captar la arquitectura completa de la API como información de primera mano. Este artículo incluye la tabla de correspondencias de los 137 endpoints.
- ¿Se puede usar en producción una API que no aparece en la documentación oficial?
- Sí se puede. El código fuente de ORCA es público, por lo que la propia implementación puede consultarse como especificación de primera mano. De hecho, el contrato de licencia de uso declara explícitamente que todo el programa —incluidas las API documentadas— no tiene garantía, así que la premisa de que «lo documentado es seguro» ya es en sí misma errónea. La diferencia real entre lo documentado y lo no documentado se reduce a dos puntos: si el cambio tiende a reflejarse en la documentación oficial y si es más fácil llevarlo a la conversación con el proveedor de soporte. El primer punto se puede cubrir vigilando el diff del código fuente publicado mensualmente, pero el segundo (que las API no documentadas son menos susceptibles de soporte) sigue presente. Si se va a usar en producción, hay que combinar la fijación de versión, la vigilancia de diffs, la verificación de regresión en un entorno de pruebas, la elaboración de documentación propia y compartir la configuración con el proveedor de soporte. Esto, en rigor, debería hacerse igual aunque se use una API documentada.
- ¿También se puede conocer desde el código fuente el formato de las solicitudes y respuestas de la API?
- Sí. La estructura de las solicitudes y respuestas XML de Nichi-Rece está escrita de forma declarativa en los archivos de definición del directorio record/ (por ejemplo, record/xml_patientinfov2res.db), y los nombres de las etiquetas XML son exactamente los nombres de los campos de esa definición. Incluso en una API no documentada, si se identifica el programa responsable a partir de la definición LD y se lee la definición record correspondiente, se pueden derivar todos los campos de la solicitud y la respuesta.
- ¿Se puede investigar aunque no se sepa leer COBOL?
- Para captar solo la arquitectura completa de los endpoints, la lectura de COBOL es casi innecesaria. Los archivos de definición LD (lddef/*.ld) y las definiciones de estructura de datos (record/*.db) son texto plano, y en ellos está escrita de forma declarativa la correspondencia entre la URL, el programa y la estructura XML. Solo cuando se profundiza en el comportamiento interno de una API concreta hay que empezar a leer COBOL, pero incluso ahí se puede obtener mucha información solo con los comentarios (en japonés) de la cabecera del programa y el historial de modificaciones.
Perfil del autor
Página de presentación del autor del artículo.
Go Komura
Representante de KomuraSoft LLC
Especializado en desarrollo de software para Windows, consultoría técnica e investigación de fallos, sobre todo en proyectos con sistemas existentes y errores difíciles de reproducir.