Grasping the Whole Nichi-Rece API from the Source Code — Reading ORCA's Published Source (with a Mapping Table of All 137 Endpoints)

· · 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:

  1. enumerate every endpoint that actually exists on the server from the source,
  2. follow one API from implementation through to the shape of its response XML,
  3. cross-check against the official documentation and verify the differences, and
  4. 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

  1. The Bottom Line First
  2. Prerequisites — Obtaining the Source and Pinning the Version
  3. How API Dispatch Works — The URL Is Determined by lddef
  4. A Discovery: the APIs Are “the API Editions of Screen-Based Workflows” — bind and bindapi
  5. Following One API All the Way — Dissecting patientgetv2
  6. Counting Every Endpoint — A One-grep Investigation Procedure
  7. Cross-checking Against the Official List — Examples of APIs That Are Not on It
  8. Deriving the Specification of an Undocumented API from the Source — The findv3 Case
  9. Measuring API Change with a Cross-version Diff — 5.1 Series vs 5.2 Series
  10. How to Live with Undocumented APIs — “Documented” Is Not a Guarantee
  11. Practical Notes for Digging Deeper
  12. Summary
  13. Appendix: Mapping Table of All 137 Endpoints (5.2 Series, July 2026)
  14. 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, following lddefcobolrecord lets 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 (plus r_5_1_branch.zip for comparison)
  • Retrieved: 2026-07-17 (both are snapshots as of 1 July 2026)
  • VERSION file 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.

GET /api01rv2/patientgetv2?id=patient numberlddef/api01rv2.ldconsults the bindapi definitionXML responseIntegrating systeme.g. electronic medical recordNichi-Rece serverMONTSUQIORAPI012R1V2.CBLget patient master dataPostgreSQL

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 recordwithout 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.

  1. 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).
  2. 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 lddef and record between 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.

  1. 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).
  2. 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-8 before reading. The licence document (doc/license.html) is ISO-2022-JP. grep will not match Japanese keywords either unless you pipe through iconv.
  • 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 are ORCG…API…. COBOL sources are as a rule under cobol/<LD name>/, but there are exceptions (the orca51 API implementations are in cobol/orca52/), so when in doubt, find by program name.
  • There are two kinds of entry point: GET-style and POST + XML-style. An API with no request record (…req) in the db "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 is record/*.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.weborca version in which things like array limits differ (for example xml_acceptlstv2res goes 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 bindapi definitions in lddef/*.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) and bindapi (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 the record definition.
  • 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

Recent articles sharing the same tags. Deepen your understanding with closely related topics.

These topic pages place the article in a broader service and decision context.

This article connects naturally to the following service pages.

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.

Back to the Blog