Grasping the Whole Nichi-Rece API from the Source Code — Reading ORCA's Published Source (with a Mapping Table of All 137 Endpoints)
· Go Komura · Healthcare IT, ORCA, API Integration, COBOL, Source Code Reading
In the previous article we established that ORCA (the JMA Standard Receipt Software) is a medical billing system, and that its source code has been published continuously for more than twenty years.
This time we actually read that source code. The theme is grasping the whole Nichi-Rece API from primary information. Rather than reading the official API specification top to bottom, we will:
- enumerate every endpoint that actually exists on the server from the source,
- follow one API from implementation through to the shape of its response XML,
- cross-check against the official documentation and verify the differences, and
- measure API change with a cross-version diff.
At the end of the article you will find a mapping table of all 137 endpoints (URL, COBOL program, function) obtained in this investigation.
The subject of this investigation is the officially published Nichi-Rece 5.2 series source (the snapshot published on 1 July 2026), with the 5.1 series (published the same day) used for comparison. Everything here is based on those two releases, and the commands needed to reproduce the results are given in the text.
Table of Contents
- The Bottom Line First
- Prerequisites — Obtaining the Source and Pinning the Version
- How API Dispatch Works — The URL Is Determined by
lddef - A Discovery: the APIs Are “the API Editions of Screen-Based Workflows” —
bindandbindapi - Following One API All the Way — Dissecting
patientgetv2 - Counting Every Endpoint — A One-grep Investigation Procedure
- Cross-checking Against the Official List — Examples of APIs That Are Not on It
- Deriving the Specification of an Undocumented API from the Source — The
findv3Case - Measuring API Change with a Cross-version Diff — 5.1 Series vs 5.2 Series
- How to Live with Undocumented APIs — “Documented” Is Not a Guarantee
- Practical Notes for Digging Deeper
- Summary
- Appendix: Mapping Table of All 137 Endpoints (5.2 Series, July 2026)
- References
1. The Bottom Line First
- The mapping between Nichi-Rece API URLs and server-side programs is declared in the source in
lddef/*.ld(the LD definition files). You can enumerate the whole API surface with nothing but a text grep — no COBOL reading required. - In the 5.2 series snapshot, 27 LD definitions bind a total of 137 endpoints with
bindapi. The API specification index page on the official site lists roughly 50, meaning more than twice that number of endpoints actually exist on the source side. - The structure of the XML requests and responses is declared in
record/*.db, and the XML tag names are the item names in those definitions verbatim. So even for an undocumented API, followinglddef→cobol→recordlets you derive the specification. - Diffing against the 5.1 series shows 9 endpoints added and 0 removed. The additions are concentrated in online eligibility verification (My Number health insurance card) work, giving a measured demonstration that “APIs grow through regulatory work, and existing ones have not disappeared (at least between these two series)”.
- An undocumented API is not an API you must not use. ORCA is open source, and the source itself can be treated as the primary specification. The question is not whether a promise exists but whether you can operate a practice that detects changes yourself — a framework for that judgement is set out in Section 10.
2. Prerequisites — Obtaining the Source and Pinning the Version
The source can be downloaded as a tarball (zip) from the official technical information page. It is refreshed on the first of every month to a snapshot as of the first of the previous month, so the cardinal rule is to always record investigation results together with the release they came from. This article uses the following.
- Source:
https://ftp.orca.med.or.jp/pub/src/jma-receipt.r_5_2_branch.zip(plusr_5_1_branch.zipfor comparison) - Retrieved: 2026-07-17 (both are snapshots as of 1 July 2026)
VERSIONfile of the 5.2 series: 5.2.0
Extracted, it comes to about 8,200 files and 237 MB, and this article mainly uses the following three directories.
| Directory | Contents | Use here |
|---|---|---|
lddef/ |
LD definitions (dispatch tables), 40 .ld files (27 of which contain bindapi definitions) |
Full enumeration of endpoints |
cobol/ |
Business logic (1,754 COBOL sources, roughly 4.06 million lines) | Confirming each API’s function and reading the implementation |
record/ |
Data structure definitions, approx. 1,240 files (274 of them XML-related) | Deriving request and response structures |
3. How API Dispatch Works — The URL Is Determined by lddef
Nichi-Rece API URLs are two-segment, of the form “module name/endpoint name”, as in /api01rv2/patientgetv2. That mapping appears directly in the LD definition files under lddef/.
Here is the top of lddef/api01rv2.ld.
name api01rv2;
bindapi "patientgetv2" "OpenCOBOL" "ORAPI012R1V2";
bindapi "acceptlstv2" "OpenCOBOL" "ORAPI011R1V2";
bindapi "appointlstv2" "OpenCOBOL" "ORAPI014R1V2";
...
Reading it is straightforward: the LD name is the first URL segment, the first argument of bindapi is the second segment, and the third argument is the name of the COBOL program that handles the request. So a request to /api01rv2/patientgetv2 is passed to a COBOL program called ORAPI012R1V2.
flowchart LR
C["Integrating system<br/>e.g. electronic medical record"] -->|"GET /api01rv2/patientgetv2?id=patient number"| M["Nichi-Rece server<br/>MONTSUQI"]
M -->|"lddef/api01rv2.ld<br/>consults the bindapi definition"| P["ORAPI012R1V2.CBL<br/>get patient master data"]
P --> D[("PostgreSQL")]
P -->|"XML response"| C
LD definitions also declare the XML record set used to assemble responses (db "xml2" { ... }) and some settings worth knowing about (array sizes and so on). An LD file can be read as “a table of contents of the screens, APIs, and data structures that module handles”.
4. A Discovery: the APIs Are “the API Editions of Screen-Based Workflows” — bind and bindapi
Look at the LD definitions for a while and something becomes obvious at once: bind (screens) and bindapi (APIs) coexist in the same file. Here is the patient enquiry module, lddef/orca13.ld.
name orca13;
bind "Q01" "OpenCOBOL" "ORCGQ01"; ← the interactive patient enquiry screen
bind "Q02" "OpenCOBOL" "ORCGQ02";
...
bindapi "findv3" "OpenCOBOL" "ORCGQAPI01"; ← its API edition
bindapi "findinfv3" "OpenCOBOL" "ORCGQAPI02";
bindapi "foundv3" "OpenCOBOL" "ORCGQAPI03";
Q01 and its siblings are the programs behind the patient enquiry screens that medical affairs staff operate; findv3 and its siblings are APIs belonging to the very same module. Even the program names follow suit: ORCGQ01 (screen) versus ORCGQAPI01 (API) — the screen-side name with “API” inserted into it.
In other words, the Nichi-Rece API was not designed as a standalone API server. It is an “entry point that converses in XML instead of via a screen”, added module by module on top of the same business program platform as the interactive screens. Once you see this structure, two things follow naturally.
- Why the first URL segment (
orca13,orca42, …) derives from the business number of a screen, and looks like a meaningless number from an API point of view. - Why the search strategy “if you can do it on a screen, an API edition may exist” works — hunting for undocumented APIs is in fact close to enumerating these “API editions of screen-based workflows”.
5. Following One API All the Way — Dissecting patientgetv2
Before counting the whole set, let us follow one API from implementation through to the shape of its response. The subject is the most basic of them all, patient master data retrieval: /api01rv2/patientgetv2.
(1) Dispatch: bindapi "patientgetv2" → ORAPI012R1V2 in lddef/api01rv2.ld. The implementation is cobol/api01rv2/ORAPI012R1V2.CBL (2,163 lines). As a rule COBOL sources sit in a directory named after the LD, so if you can read lddef you can identify the implementation file almost mechanically (there are exceptions — for instance the implementations of the orca51 APIs live in cobol/orca52/; the reliable route is to find by program name).
(2) The program header: at the top it reads “Component name: patient master data retrieval (version 2 support)”, and the revision history that follows lines up, as a chronology, every regulatory revision this single API has absorbed — from regional integration ID support in 2013, through electronic prescription support in 2022, to “returning eligibility validity from the insurance card” in 2024. It is more detailed than the “update history” in the API specification.
(3) What it reads: the COPY clauses in the WORKING-STORAGE SECTION (the shared definitions it pulls in) tell you what data this API touches. An excerpt:
COPY "CPPTINF.INC". *> patient master data (tbl_ptinf)
COPY "CPPTNUM.INC". *> patient number
COPY "CPJYURRK.INC". *> treatment history
COPY "CPPTCARE-HKNINF.INC". *> long-term care insurance information
COPY "CPPTMYNUMBER.INC". *> patient My Number
COPY "CPONSHI-KAKU.INC". *> online eligibility verification result
COPY "CPPATIENTXMLV2RES.INC" *> response formatting
An API that merely returns one patient pulls in close to thirty definitions, reaching as far as long-term care insurance, My Number, and online eligibility verification. It is material evidence that the meaning of “patient master data” has kept expanding alongside the regulations.
(4) The shape of the response: the structure of the response XML is declared in 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);
...
If you have used the Nichi-Rece API before, this should look familiar. The XML tag names in API responses (Patient_ID, WholeName, …) are the item names in this record definition verbatim. That is to say, the “original” of the field tables in the official XML specification is right here. Field sizes (digit counts) are written down too, so it also serves as primary information for designing validation on the integrating side.
Steps (1) to (4) are the template for dissecting a single Nichi-Rece API. Identify the program from lddef, get the function and history from the header, learn what data it touches from the COPY clauses, and pin down the message structure from record — without reading the COBOL logic itself, that gets you most of the information you need in practice.
6. Counting Every Endpoint — A One-grep Investigation Procedure
Once you understand the mechanism, enumerating the whole set is mechanical work.
# Enumerate every endpoint → COBOL program mapping
grep -H '^[[:space:]]*bindapi' lddef/*.ld
# Counts per module
for f in lddef/*.ld; do
n=$(grep -c '^[[:space:]]*bindapi' "$f"); [ "$n" -gt 0 ] && echo "$f: $n"
done
# Mechanically extract the function name of each endpoint from the COBOL header
# (the source is EUC-JP, so pipe it through iconv. There are exceptions where the
# program's location does not match the LD name, so locate it with 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
The totals for this release are as follows (the individual entries for all 137 are in the appendix).
| LD definition (= first URL segment) | Count | Business area |
|---|---|---|
api01rv2 |
52 | Read operations generally (patient, reception, appointments, treatment, inpatient, form data) |
api21 |
16 | Registering, checking, and deleting medical procedures (outpatient/inpatient) |
orca51 |
12 | Bulk return of master and patient data (diagnoses, fee points, addresses, and so on) |
orca14 |
10 | Appointment registration + online eligibility verification (My Number health insurance card) |
orca12 |
8 | Registering and updating patient information (basic / insurance / workers’ compensation / long-term care …) |
orca71 |
8 | Additional online eligibility verification work (OCR images, medical assistance, and so on) |
orca31 |
4 | Admission and discharge registration, inpatient accounting |
orca13 / orca22 / orca42 / orca44 |
2–3 each | Patient enquiry / diagnosis registration / receipt creation and printing / electronic receipt data creation |
| Others (reception, payment collection, form printing, user management, login, etc.) | the remainder | — |
| Total (27 modules) | 137 | — |
About 40 per cent cluster in the read operations (api01rv2), while write operations are split by business module (patient = orca12, reception = orca11, medical procedures = api21, …). The “API editions of screen-based workflows” structure from Section 4 shows through directly in this distribution too.
Another thing worth noticing is that APIs that are platform functions rather than business functions are mixed in — session_start (login authentication) in the session module, or print in orca00. You could stare at the official specification index for as long as you like and never notice this layer exists.
7. Cross-checking Against the Official List — Examples of APIs That Are Not on It
Next, cross-check the APIs listed on the official site’s “JMA Standard Receipt Software API specification” index page (roughly 50) against the 137 extracted from the source. What emerges is that a great many endpoints exist on the source side that are not on the index page. Here are examples by functional area (all function names were confirmed from the “component name” in the COBOL header).
| Area | Example endpoint | Handling program | Function per the header |
|---|---|---|---|
| Patient search | /orca13/findv3 |
ORCGQAPI01 | Patient enquiry |
| Receipt work | /orca42/receiptmakev3 |
ORAPI042R1V3 | Receipt creation (xml2) |
| Receipt work | /orca44/receiptdatamakev3 |
ORAPI044R1V3 | Electronic receipt data creation (xml2) |
| Checking work | /orca41/datacheckv3 |
ORCGDAPI01 | Data check |
| Billing management | /orca43/claimedmanagementv3 |
ORAPI043R1V3 | Billing management registration |
| Platform | /session/session_start |
ORCGSESSTART | Login authentication |
In other words, beyond day-to-day integration such as reception and patient information, there exists as implementation a set of APIs that can drive the monthly receipt workflow from outside (creation → checking → electronic receipt data output → billing management). It is a layer you never see if all you know is electronic medical record integration.
Two important cautions here.
- Do not jump straight from “not on the list” to “undocumented”. Form data retrieval (
formdatagetv2), for instance, is documented on the PushAPI side, and the index page does not guarantee exhaustive coverage of all APIs. You should only say “no documentation found” after checking individual documentation pages and searching the site (the table above is the result of doing exactly that, and even so it is not complete proof that no published documentation exists). - Third-party implementations are also useful cross-check material. OSS such as the orca-api library, which uses the Nichi-Rece API from Ruby, is a useful catalogue of the endpoints actually used in practice.
8. Deriving the Specification of an Undocumented API from the Source — The findv3 Case
Knowing that “APIs not on the list exist” gets you nowhere if you do not know the shape of the request. This is where the template from Section 5 earns its keep. Let us try it on findv3 (patient enquiry).
The request structure is in record/xml_findv3req.db (excerpt).
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];
...
Simply reading the definition tells you this is a rather capable patient search API that can combine a date-of-birth range, sex, a last-visit-date range, attending doctor, department, deceased flag, a patient number range, and names (multiple values allowed). The patient search APIs on the official list (patientlst1v2 and friends) are mostly single-purpose searches on things like a patient number range or a name, so this API — which offers the same compound-condition search as the patient enquiry screen — is functionally a clear superset.
The response structure is likewise in record/xml_findv3res.db, and reading the corresponding COBOL (ORCGQAPI01.CBL) lets you confirm the finer behaviour (result limits, ordering, and so on). In ORCA, where the source is published, an “undocumented API” is really “an API you can write the documentation for yourself”.
How far you should trust a specification derived this way in production is the subject of the next section but one.
9. Measuring API Change with a Cross-version Diff — 5.1 Series vs 5.2 Series
Before debating the risk of undocumented APIs, let us measure how much APIs actually change. Diffing the bindapi definitions against the 5.1 series snapshot published the same day:
| Comparison | Result |
|---|---|
| Total endpoints in the 5.1 series | 128 |
| Total endpoints in the 5.2 series | 137 |
| Added in the 5.2 series | 9 |
| Removed in the 5.2 series | 0 |
The nine additions break down as six related to online eligibility verification (onlinequa10, onlinequa11, onlinequaapp1 to 3, onlineaidlstreq1), plus patient memo registration (patientmemomodv2), bulk return of input codes (inputcodelstv3), and retrieval of input and procedure code information (medicationgetv2) — nine in total. You can see clearly that regulatory work (around the My Number health insurance card) manifests as new API endpoints.
Two things follow from this observation.
- The “surface” of endpoints is stable (zero removals between these two series). What to fear is not disappearance but the addition of fields to, and behavioural changes in, individual APIs — changes of the kind visible in the revision history we saw in Section 5.
- Because the source is published monthly, this kind of change detection can be automated. If you maintain an integrating system, simply diffing
lddefandrecordbetween monthly snapshots gives you an early warning network for what next month’s upgrade will change. This is a maintenance capability unique to published source, and hard to come by with other medical billing systems.
10. How to Live with Undocumented APIs — “Documented” Is Not a Guarantee
First, let us get the premise right. Article 5 of Chapter 2 of the JMA OpenSource License disclaims all warranties for the program as a whole, including that it will operate without impediment and that it is free of defects. That applies equally to documented APIs. Nor is there any explicit provision in the official documents promising not to change documented APIs — and indeed, as we saw in Section 5, even patientgetv2, the poster child of documented APIs, has had fields added with every round of regulatory work.
So the difference between “documented” and “undocumented” is not the presence or absence of a guarantee. Pushed to its conclusion, the substantive difference is just these two things.
- Whether a change is likely to surface as an update to the official documentation (changes to an undocumented API are invisible unless you read the source).
- Whether it gives you common ground in conversations with your support provider.
And ORCA publishes its source every month. The first difference can be closed by diff monitoring of the source. The source is the primary specification; the documentation is merely an abridged translation of it — that is the correct attitude towards open source. When documentation and source disagree, it is the source that actually runs.
That said, since we are dealing with a system directly tied to money in the form of receipt claims, regardless of whether an API is documented, any API you build into a production flow should be paired with the following operational practices.
| What to do | Purpose |
|---|---|
| Pin and record the release (retrieval date, SHA-256, correspondence with the running package) | So that investigation and verification results can be reproduced at any time. In environments where a support provider applies their own patches, also verify the difference against the published source |
Diff monitoring of the monthly snapshots (lddef/record plus the COBOL handling the APIs you use) |
Early detection of change. Interface changes surface in lddef/record, behavioural changes on the COBOL side. Changes to undocumented APIs never surface in the official documentation, so a source diff is the effective means of detection |
| Build regression testing in a verification environment into the upgrade procedure | To prevent things “quietly breaking” in a revision month |
| Write and maintain your own API documentation for undocumented APIs | Turn the specifications derived by the method in Section 8 into a team asset |
| Share your integration configuration with your support provider | To speed up fault isolation during an incident |
One operational caution. The published snapshot reflects the state as of the first of the previous month, so if you apply a package update to production first, you will only be able to read the corresponding source after the fact. For this monitoring to function as an early warning system, you need to bias the ordering the other way: wait for the corresponding source to be published and verified before upgrading.
Put the other way round: an organisation that cannot sustain this practice is not safe even if it only uses documented APIs. That is what it means to put unwarranted open source at the core of your business.
11. Practical Notes for Digging Deeper
Small stumbling blocks you hit at the stage of chasing an individual API through the source.
- The character encoding is EUC-JP. COBOL sources and comments are EUC-JP, so run them through
iconv -f EUC-JP -t UTF-8before reading. The licence document (doc/license.html) is ISO-2022-JP. grep will not match Japanese keywords either unless you pipe throughiconv. - Learning the program naming convention speeds things up. The basic form for API programs is
ORAPI+ business number +R(read) /S(write) + version (V2/V3); the API editions of screen programs areORCG…API…. COBOL sources are as a rule undercobol/<LD name>/, but there are exceptions (theorca51API implementations are incobol/orca52/), so when in doubt,findby program name. - There are two kinds of entry point: GET-style and POST + XML-style. An API with no request record (
…req) in thedb "xml2"block of its LD definition (patientgetv2, for example) is likely a GET-parameter type; one that has a request record is likely POST + XML. Confirm definitively in the input handling on the COBOL side. - Determine the meaning of data fields by cross-referencing
record/with the official table definition document. The “original” of response fields isrecord/*.db; the meaning on the DB side is in the officially published table definition document. Laying both side by side raises your confidence. Note also that some definitions have a coexisting WebORCA-specific.db.weborcaversion in which things like array limits differ (for examplexml_acceptlstv2resgoes from 1,000 to 1,500 entries). Check those when designing a WebORCA integration. - Do your functional testing in a verification environment. The official trial server, or a community Docker environment, lets you hit the API and check behaviour without touching a live medical billing system. Never “test-fire” on a production machine.
12. Summary
- The whole Nichi-Rece API surface is concentrated in the
bindapidefinitions inlddef/*.ld, and grep alone enumerates 137 endpoints (5.2 series, July 2026 release). - What the Nichi-Rece API really is, is “the API edition of screen-based workflows”.
bind(screens) andbindapi(APIs) coexist in the same LD definition, and the module name in the URL derives from the business number of a screen. - A single API can be dissected in the order
lddef(dispatch) → COBOL header (function and history) → COPY clauses (data touched) →record/*.db(the original of the XML structure). The XML tag names are exactly the item names in therecorddefinition. - The gap between the official list (roughly 50) and the source (137) includes a set of APIs capable of driving the monthly workflow — receipt creation, electronic receipt data creation, data checking. But do not jump from “not on the list” to “undocumented”; verify case by case.
- The measured diff against the 5.1 series shows 9 additions (mostly online eligibility verification work) and 0 removals. Diffing the monthly snapshots is usable as an early warning network for integration maintenance.
- The licence agreement explicitly disclaims all warranties, documented APIs included, so “documented” does not mean “safe”. The source is the primary specification. Documented or not, if you are using it in production, pair it with version pinning, monthly diff monitoring, regression testing, and your own documentation.
Starting from the source rather than the specification, as we have done here, is an investigative technique that works well beyond ORCA — for any long-lived line-of-business system whose documentation has fallen behind its implementation. Fortunately, ORCA’s source is published, so you can practise the technique legally and against the latest state every month.
13. Appendix: Mapping Table of All 137 Endpoints (5.2 Series, July 2026)
These are all the endpoints mechanically extracted from the bindapi definitions in lddef/*.ld. The function names are English renderings of the “component name” field in each COBOL program’s header (the Japanese originals are transcribed verbatim in the Japanese edition of this article, inconsistencies and full-width parentheses included). This table is a record of the facts of the 5.2 series snapshot as of 1 July 2026; it does not indicate whether any endpoint may be used or is supported.
| URL | COBOL program | Function per the header |
|---|---|---|
/api01rv2/patientgetv2 |
ORAPI012R1V2 | Get patient master data |
/api01rv2/acceptlstv2 |
ORAPI011R1V2 | Reception list |
/api01rv2/appointlstv2 |
ORAPI014R1V2 | Appointment list (xml2) |
/api01rv2/patientlst1v2 |
ORAPI012R2V2 | Patient number list retrieval |
/api01rv2/patientlst2v2 |
ORAPI012R3V2 | Patient information list retrieval |
/api01rv2/patientlst3v2 |
ORAPI012R4V2 | Patient information list retrieval (by name) |
/api01rv2/system01lstv2 |
ORAPI101R1V2 | System management: department and doctor list retrieval |
/api01rv2/medicalgetv2 |
ORAPI021R1V2 | Medical procedure return 1 (xml2) |
/api01rv2/diseasegetv2 |
ORAPI022R1V2 | Patient diagnosis return |
/api01rv2/appointlst2v2 |
ORAPI014R2V2 | Patient appointment status (xml2) |
/api01rv2/acsimulatev2 |
ORAPI023R1V2 | Billing amount simulation |
/api01rv2/visitptlstv2 |
ORAPI021R2V2 | Visiting patient list (xml2) |
/api01rv2/hsconfbasev2 |
ORAPI031RC1V2 | Get inpatient basic information |
/api01rv2/hsconfwardv2 |
ORAPI031RC2V2 | Get inpatient ward information |
/api01rv2/tmedicalgetv2 |
ORAPI021R3V2 | In-progress data list (xml2) |
/api01rv2/hsmealv2 |
ORAPI032R1V2 | Get inpatient meal information |
/api01rv2/insprogetv2 |
ORAPI105R1V2 | Insurer master list (xml2) |
/api01rv2/hsptevalv2 |
ORAPI032R2V2 | Get inpatient medical category and ADL score information |
/api01rv2/hsptinfv2 |
ORAPI031R1V2 | Get inpatient basic data |
/api01rv2/hsacsimulatev2 |
ORAPI034R1V2 | Discharge provisional calculation |
/api01rv2/incomeinfv2 |
ORAPI023R2V2 | Get payment collection information |
/api01rv2/systeminfv2 |
ORAPI000R1V2 | Get system information |
/api01rv2/insuranceinf1v2 |
ORAPI012R5V2 | Get insurance number master (types of insurance and public expense) and subsidy category |
/api01rv2/receiptinf1v2 |
ORAPI042R1V2 | Get receipt information (number of receipts, fee points) |
/api01rv2/claimfrontv2 |
ORAPICLAIMR1V2 | CLAIM reception transmission (xml2) |
/api01rv2/claimaccountv2 |
ORAPICLAIMR2V2 | CLAIM billing confirmation transmission (xml2) |
/api01rv2/formdatagetv2 |
ORAPI001R1V2 | Get form data |
/api01rv2/contraindicationcheckv2 |
ORAPI021R4V2 | Contraindicated drug combination information return (xml2) |
/api01rv2/okusurigetv2 |
ORAPIRELR1V2 | Patient medication notebook information (xml2) |
/api01rv2/okusuriputv2 |
ORAPIRELR2V2 | Patient medication notebook information (xml2) |
/api01rv2/imagegetv2 |
ORAPI000R2V2 | Get image data |
/api01rv2/patientlst6v2 |
ORAPI012R6V2 | Patient: get insurance combinations |
/api01rv2/prescriptionv2 |
ORAPI001R2V2 | Prescription printing |
/api01rv2/medicinenotebookv2 |
ORAPI001R3V2 | Medication notebook printing |
/api01rv2/subjectiveslstv2 |
ORAPI025R1V2 | Get detailed symptom notes (retrieval) (xml2) |
/api01rv2/system01dailyv2 |
ORAPI101R2V2 | System management: get patient registration and medical procedure configuration information |
/api01rv2/pusheventgetv2 |
ORAPI000R3V2 | Get push notifications |
/api01rv2/apiversiongetv2 |
ORAPI000R4V2 | Get API version |
/api01rv2/karteno1v2 |
ORAPI001R4V2 | Karte form No. 1 (outpatient) printing |
/api01rv2/karteno1hv2 |
ORAPI001R5V2 | Karte form No. 1 (inpatient) printing |
/api01rv2/karteno3v2 |
ORAPI001R6V2 | Karte form No. 3 (outpatient) printing |
/api01rv2/karteno3hv2 |
ORAPI001R7V2 | Karte form No. 3 (inpatient) printing |
/api01rv2/patientlst7v2 |
ORAPI012R7V2 | Patient: get memo contents |
/api01rv2/invoicereceiptv2 |
ORAPI001R8V2 | Outpatient combined invoice and receipt |
/api01rv2/statementv2 |
ORAPI001R9V2 | Outpatient itemised statement of medical charges |
/api01rv2/invoicereceipthv2 |
ORAPI001R10V2 | Inpatient combined invoice and receipt |
/api01rv2/statementhv2 |
ORAPI001R11V2 | Inpatient itemised statement of medical charges |
/api01rv2/onlinedruggetv2 |
ORAPIONSHIR1V2 | API: eligibility verification drug information retrieval |
/api01rv2/onlinespecgetv2 |
ORAPIONSHIR2V2 | API: eligibility verification specific health checkup information retrieval |
/api01rv2/patientlst8v2 |
ORAPI012R8V2 | Get former surname history information |
/api01rv2/onlinemedgetv2 |
ORAPIONSHIR3V2 | API: eligibility verification treatment information retrieval |
/api01rv2/medicationgetv2 |
ORAPI102R1V2 | Get input and procedure code information |
/api21/medicalmodv2 |
ORAPI021S1V2 | Medical procedure: registration (xml2) |
/api21/medicalmodv31 |
ORAPI021S1V3 | Medical procedure: consultation fee return (integrated input) |
/api21/medicalmodv32 |
ORAPI021S2V3 | Medical procedure: treatment content check (integrated input) |
/api21/medicalmodv33 |
ORAPI021S3V3 | Medical procedure: procedure registration (integrated input) |
/api21/medicalmodv34 |
ORAPI021S4V3 | Medical procedure: deletion (integrated input) |
/api21/claimreceivev2 |
ORAPICLAIM21S1V2 | CLAIM: medical procedure registration (xml2) |
/api21/medicalmodv35 |
ORAPI021S5V3 | Medical procedure: rehabilitation start date and comment registration |
/api21/medicalmodv36 |
ORAPI021S6V3 | Medical procedure: bulk insurance change |
/api21/tmedicalmodv2 |
ORAPI021S2V2 | In-progress data retrieval and deletion (xml2) |
/api21/medicalmodv37 |
ORAPI021S7V3 | Exclusive lock release |
/api21/medicalmodav31 |
ORAPI021NS1V3 | Inpatient medical procedure: initial return (integrated input) |
/api21/medicalmodav32 |
ORAPI021NS2V3 | Inpatient medical procedure: treatment content check |
/api21/medicalmodav33 |
ORAPI021NS3V3 | Inpatient medical procedure: procedure registration (integrated input) |
/api21/medicalmodav34 |
ORAPI021NS4V3 | Inpatient medical procedure: deletion (integrated input) |
/api21/medicalmodv23 |
ORAPI021S3V2 | First-visit calculation date registration |
/api21/medicalmodav35 |
ORAPI021NS5V3 | Inpatient medical procedure: inpatient dispensing fee update (integrated input) |
/orca00/print |
ORCGMPRT | Print API module |
/orca01/reprintv3 |
ORAPI001R1V3 | Reprint retrieval (xml2) |
/orca02/jobmanagev3 |
ORAPI002R1V3 | Job list return (xml2) |
/orca06/patientmemomodv2 |
ORAPI006S1V2 | Patient memo content registration |
/orca07/statisticsdatav3 |
ORAPI007R1V3 | CSV output selection screen (daily/monthly statistics data retrieval) |
/orca101/manageusersv2 |
ORCGWAPI01 | User management |
/orca102/medicatonmodv2 |
ORAPI102S1V2 | User fee point master registration (xml) |
/orca11/acceptmodv2 |
ORAPI011S1V2 | Reception registration (xml2) |
/orca12/patientmodv2 |
ORAPI012S1V2 | Patient master data settings (register/delete) (xml2) |
/orca12/patientmodv31 |
ORAPI012S1V3 | Patient master data settings (register/delete) (V3) |
/orca12/patientmodv32 |
ORAPI012S2V3 | Patient insurance and public expense information settings (register/delete) (V3) |
/orca12/patientmodv33 |
ORAPI012S3V3 | Patient workers’ compensation and compulsory automobile liability settings (register/delete) (V3) |
/orca12/patientmodv34 |
ORAPI012S4V3 | Patient: income status, special notes, individual information and similar settings |
/orca12/patientmodv35 |
ORAPI012S5V3 | Patient: public expense contribution amount information and similar settings |
/orca12/patientmodv36 |
ORAPI012S6V3 | Patient: long-term care insurance and care certification information and similar settings |
/orca12/patientmodv37 |
ORAPI012S7V3 | Patient: patient contraindicated drug settings |
/orca13/findv3 |
ORCGQAPI01 | Patient enquiry |
/orca13/findinfv3 |
ORCGQAPI02 | Patient enquiry |
/orca13/foundv3 |
ORCGQAPI03 | Patient enquiry (printing) |
/orca14/appointmodv2 |
ORAPI014S1V2 | Appointment registration (xml2) |
/orca14/onlinequa1 |
ORAPION001R1V2 | Online eligibility verification |
/orca14/onlinequa2 |
ORAPION002R1V2 | Facial-recognition eligibility verification registration and update |
/orca14/onlinequa3 |
ORAPION003R1V2 | Insurance card eligibility verification registration and update |
/orca14/onlinedrug1 |
ORAPION004R1V2 | Eligibility verification drug information registration and update |
/orca14/onlinespec1 |
ORAPION005R1V2 | Eligibility verification specific health checkup registration and update |
/orca14/onlinerefall1 |
ORAPION006R1V2 | Bulk registration of enquiry numbers |
/orca14/onlinequa4 |
ORAPION007R1V2 | Public expense verification registration and update |
/orca14/onlinequaapp1 |
ORAPION008R1V2 | Bulk eligibility verification enquiry for appointment patients |
/orca14/onlinequaapp2 |
ORAPION009R1V2 | Bulk eligibility verification enquiry for appointment patients |
/orca21/medicalsetv2 |
ORAPI021SETV2 | Medical procedure: set registration (xml2) |
/orca22/diseasev2 |
ORAPI022R1V3 | Patient diagnosis registration (xml2) |
/orca22/diseasev3 |
ORAPI022R2V3 | Patient diagnosis registration (xml2) |
/orca23/incomev3 |
ORCGSAPI01 | Payment collection (billing list) |
/orca25/subjectivesv2 |
ORAPI025S1V2 | Detailed symptom note comment registration (xml2) |
/orca31/hsptinfmodv2 |
ORCGI0API01 | Admission registration |
/orca31/birthdeliveryv2 |
ORCGI0API02 | Childbirth and childcare lump-sum allowance |
/orca31/hsacctmodv2 |
ORCGI4API02 | Inpatient accounting registration |
/orca31/hspmmv2 |
ORCGI4API03 | Inpatient accounting: return of final treatment year and month |
/orca32/hsptevalmodv2 |
ORCGI4API01 | Medical category and ADL score registration |
/orca36/hsfindv3 |
ORCGI2API01 | Inpatient enquiry |
/orca41/datacheckv3 |
ORCGDAPI01 | Data check |
/orca42/receiptmakev3 |
ORAPI042R1V3 | Receipt creation (xml2) |
/orca42/receiptprintv3 |
ORAPI042R2V3 | Receipt printing (xml2) |
/orca42/unclaimedv3 |
ORAPI042R3V3 | Unclaimed setting |
/orca43/claimedmanagementv3 |
ORAPI043R1V3 | Billing management registration |
/orca44/receiptdatamakev3 |
ORAPI044R1V3 | Electronic receipt data creation (xml2) |
/orca44/receiptdatacheckmakev3 |
ORAPI044R2V3 | Electronic receipt data creation for checking (xml2) |
/orca44/receiptdatapatientmakev3 |
ORAPI044R3V3 | Individual electronic receipt data creation (xml2) |
/orca51/diseasemasterlstv3 |
ORAPI052R1V3 | Diagnosis master return (xml2) |
/orca51/medicationmasterlstv3 |
ORAPI052R2V3 | Fee point master return (xml2) |
/orca51/stock1v2 |
ORAPI052R3V3 | Stock management information return (xml2) |
/orca51/patientbasisallv3 |
ORAPI052R4V3 | Bulk return of patient master data (xml2) |
/orca51/patientdiseaseallv3 |
ORAPI052R5V3 | Patient diagnosis master return (xml2) |
/orca51/masterlastupdatev3 |
ORAPI052R6V3 | Master last-updated date return |
/orca51/patientmedicalallv3 |
ORAPI052R7V3 | Bulk return of patient medical procedures (xml2) |
/orca51/addressmasterlstv3 |
ORAPI052R8V3 | Address master return (xml2) |
/orca51/tempmedicaladdv3 |
ORAPI051R1V3 | Bulk registration of in-progress data (xml2) |
/orca51/statisticsformv3 |
ORAPI051R2V3 | Daily/monthly statistics list retrieval (xml2) |
/orca51/masterexportv3 |
ORAPI052R9V3 | Master retrieval |
/orca51/inputcodelstv3 |
ORAPI052R10V3 | Bulk return of input codes (xml2) |
/orca71/onshicond |
ORAPIONCONDR1V2 | Online eligibility verification |
/orca71/onlineimg1 |
ORAPION011R1V2 | Eligibility verification: insurance card OCR image registration |
/orca71/onlinemedical1 |
ORAPION010R1V2 | Eligibility verification: treatment information registration and update |
/orca71/onlinemedical2 |
ORAPION012R1V2 | Eligibility verification: dental treatment information registration and update |
/orca71/onlineaidlstreq1 |
ORAPION013R1V2 | Eligibility verification: medical assistance issuance number registration |
/orca71/onlinequaapp3 |
ORAPION014R1V2 | Bulk eligibility verification enquiry for home-visit care patients |
/orca71/onlinequa10 |
ORAPION015R1V2 | Medical expense subsidy information registration and update |
/orca71/onlinequa11 |
ORAPION016R1V2 | Home-visit care / online care registration and update |
/session/session_start |
ORCGSESSTART | Login authentication |
14. References
- Technical Information - JMA Standard Receipt Software - ORCA Project (source code releases)
- JMA Standard Receipt Software API Specification - ORCA Project
- JMA Standard Receipt Software API - ORCA Project
- orca-api: a Ruby library for the JMA Standard Receipt Software API (GitHub)
- Nichi-Rece 5.2 series and 5.1 series source code (both snapshots published July 2026)
lddef/api01rv2.ld/lddef/orca13.ld/cobol/api01rv2/ORAPI012R1V2.CBL/record/xml_patientinfov2res.db/record/xml_findv3req.dband others — all measured figures and quotations in this article are based on these snapshots
Related Articles
Recent articles sharing the same tags. Deepen your understanding with closely related topics.
What Happens When You Tap a My Number Health Insurance Card — Reading Online Eligibility Verification and Its Integration with the Medical Billing System from ORCA's Source Code
From tapping a My Number health insurance card to insurance eligibility landing in the medical billing system, explained through the end-...
ORCA (Nichi-Rece) Is Not an Electronic Medical Record System — Medical Billing Systems and Healthcare IT Architecture from an Engineer's Perspective
ORCA (Nichi-Rece) is not an electronic medical record system — it is a medical billing system. From an engineer's perspective, this artic...
What Do the Eight Digits of an Insurer Number Tell You? — Law-Type Numbers, Prefecture Numbers and Check Digits Read from a Receipt Computer's Implementation
The insurer number on a Japanese health insurance card is made up of a 2-digit law-type number, a 2-digit prefecture number, a 3-digit pe...
What Does the Electronic Prescription Change in a Receipt Computer? — Reading ORCA's Electronic Prescription Support in the Source Code
What does a receipt computer actually need in order to support electronic prescriptions? From the table design in ORCA (Nichi-Rece) that ...
Where Do Downcoding and Returned Claims Actually Happen? — Taking Apart Receipt Checking Logic Using ORCA's Source Code and Public Documents
Where do downcoding and returned claims actually happen? From ORCA's data check function and its check masters, through the rece-den data...
Related Topics
These topic pages place the article in a broader service and decision context.
Windows Technical Topics
Topic hub for KomuraSoft LLC's Windows development, investigation, and legacy-asset articles.
Where This Topic Connects
This article connects naturally to the following service pages.
Technical Consulting & Design Review
Choosing an integration approach for ORCA, and investigating behaviour that is not written down in any specification, are classic topics for technical consulting and design review.
Legacy Asset Reuse & Migration Support
Source code reading of COBOL assets and integration design sit on a continuum with migration and integration projects that make use of legacy assets.
Frequently Asked Questions
Common questions about the topic of this article.
- How many endpoints does the Nichi-Rece API have in total?
- The API specification index page on the official site lists roughly 50, but counting the LD definition files in the published source code (5.2 series, July 2026 snapshot) gives 137 endpoints bound with bindapi. Some of the difference is documented on separate pages — form-related APIs, for example — so you cannot immediately conclude that "not on the list" means "undocumented". Still, counting on the source side lets you grasp the whole API surface as primary information. This article includes a mapping table of all 137.
- Is it acceptable to use an API that is not in the official documentation in production?
- Yes. ORCA's source code is published, so you can verify the implementation itself as the primary specification. In any case the licence agreement explicitly disclaims all warranties for the program as a whole, including documented APIs, so the assumption that "documented means safe" is the more mistaken position. The substantive difference from documentation is twofold: whether changes are likely to surface in the official documentation, and whether the API gives you common ground in conversations with your support provider. The first can be closed by diffing the monthly source releases; the second (undocumented APIs are less likely to be supported) remains. If you are going to use one in production, pair it with version pinning, diff monitoring, regression testing in a verification environment, your own documentation, and sharing your configuration with your support provider. That is what you ought to be doing for documented APIs too.
- Can you also work out the request and response formats from the source?
- Yes. The structure of Nichi-Rece's XML requests and responses is declared in definition files in the record/ directory (for example record/xml_patientinfov2res.db), and the XML tag names are the item names in those definitions verbatim. Even for an undocumented API, you can identify the responsible program from the LD definition, read the corresponding record definition, and derive every field of the request and response.
- Can I investigate this without being able to read COBOL?
- Reading COBOL is almost entirely unnecessary if all you want is the overall endpoint picture. The LD definition files (lddef/*.ld) and the data structure definitions (record/*.db) are plain text, and they declare the mapping between URL, program, and XML structure. You only start reading COBOL when you go on to chase the internal behaviour of an individual API — and even then, the comments in the program header (in Japanese) and the revision history alone yield a great deal of information.
Author Profile
Profile page for the article author.
Go Komura
Representative of KomuraSoft LLC
Focused on Windows software development, technical consulting, and investigations into failures that are difficult to reproduce.
Public links