ORCA 公式で案内されている WebORCA お試しサーバは、ORCA API が生きていて通信できた。
URL: https://weborca-trial.orca.med.or.jp/
Authentication: BASIC user: trial password: weborcatrial

OpenOceanMini
ちょっと嬉しくなって、お試しサーバと API 経由でお話しできる MacOS 専用の OceanMini というアプリを公開した。
OveanMini Ver 1.0.4 download
現時点で使う人がいるとも思えないが、一応説明しておく。
(! 手狭になってきたので、Ver 1.0.5 以降はこちらのページから DL してください)
ダウンロードした OceanMini.zip を解凍。ダブルクリックで起動。
公証とっているのでここら辺はスムーズに行くと思う。
タブパネルで ORCA の方を選ぶ。

この状態で Start ボタンを押すとお試しサーバと通信してくれます。(現在は 5 秒毎に受付情報を取得)
具体的には
/api/api01rv2/acceptlstv2?class=03 に
<data>
<acceptlstreq type="record">
<Acceptance_Date type="string">today(yyyy-MM-dd)</Acceptance_Date>\
<Department_Code type="string"></Department_Code>
<Physician_Code type="string"></Physician_Code>
<Medical_Information type="string"></Medical_Information>
<Display_Order_Sort type="string">True</Display_Order_Sort>
</acceptlstreq>
</data>
を POST。
返ってきたレスポンスを適当にパースして表示させています。
(この API の詳しいフォーマットは公式ページに書いてあります)
(追記)より詳しい使い方はこちらで。
CLAIM 廃止
ORCA 連動型のユーティリティを作成する際、現時点ではここいらの通信機能の実装から入るのが適当だと思う。
というのは今まで ORCA と「お話し」するためには CLAIM という接続方式を採用する必要があったのだが、この接続方式は 2026/4 月からは原則廃止になる。
代わりになるのが ORCA API というやつで、上の例でもわかるようにリクエストやレスポンスは xml 形式になっている。(JSON も使えるが)
この部分は新規に実装する必要がある。
Java では JAXB、C/C++ では?
その一方で最近のシステム開発言語のほとんどがオブジェクト指向で、xml 表現をそのまま取り扱うのが苦手だ。
だから、今後 ORCA を使うのであれば、なんらかの形で
クラス ↔︎ XML
ができるような仕組みを用意しておく必要がある。
XML は汎用的な書式なので、大抵の言語系ではそのためのライブラリなどが用意されている。
Java では(正確には JakartaEE の仕様だが) JAXB という仕様が決まっている。ちなみに内輪で使っている dolphin-2.7m 系では、この仕様に従って EzOrcaApi というライブラリを作成した。
例外は C/C++ 系で、具体的にこうやれという仕様のようなものは何もない。ここら辺は文化の違いというものだろうか。その代わり XML Parser のようなものは各種用意されている。実装するなら、それらを使ってお好きなように、ということなのだろう。
MacOS アプリでサーバー機能を提供する
ORCA に限らずウェブ系全般に言えることだと思うが、実務的に Java や JavaScript あたりのフレームワークでさらっと実現できるものにわざわざ C/C++ を持ち出す必要はない。
ただ、ここにも例外があって、それは Mac でサーバー機能を提供したいというような場合だ。
MacOS 上で Java 系のフレームワークやアプリケーションサーバを走らせるという選択肢はあるのだが(実際、dolphin ではそうしている)、アプリ感覚でボタン一発でサーバ機能を提供したいというような場合、これといったソリューションはこれまでなかったように思う。
MacOS でアプリをつくるとなったら開発言語はほぼ Objective-C か Swift に限定されるが、これまでの C/C++ の汎用ライブラリの助けを借りたいとなったら Objective-C 一択になる。
前々から、小規模医療機関の LAN 内でお手軽に使えるような電子カルテ(もどき?)はあってもいいかなと思っていて、今回、ようやくという感じではあるが、OpenOceanMini としてチャレンジしているという次第だ。
更新メモ
以下は更新の記録。
タブを Ocean にして、Start ボタンを押すと規定のブラウザが立ち上がり、ログイン画面が表示される。
施設ID: ocean ユーザーID: ocean パスワード: ocean
で入れます。

Ver 1.0.5
こちらのページで。
Ver 1.0.4
かなりカルテっぽくなったと思う。

実際に WebORCA に診療行為送れてます。
特徴などは以下の通り。

Ver 1.0.3
一目で気づくと思うが、カルテ記載のためのエディタがかなりそれっぽくなった。

文字フォントの大きさや色も変えられる。画像の挿入もできるとそれなりに凝っている。
ただ、あまり大きなファイルを読み込ませるのはやめた方がいいと思う。
現状だと画像は html に埋め込む形でブラウザに送信しているので、サーバの負担が重すぎる。
過去カルテも編集可能です。

個人的には PatientOutWainting テーブルがうまく機能しているのが嬉しい。
Ver 1.0.2
ルーティングがうまくいったので、ビューをいくつか追加。
使える機能が全くないのもどうかと思うので、Papaya というプロジェクトのブラウザタイプの dicom viewer を採用した。

Ver 1.0.1
C/C++ では、標準的なウェブサーバーすらないので、サーバーはもちろん、認証機構も独自実装する必要がある。
Ver 1.0.0 では、ドキュメントルートに出来合の dashboard.html というファイルを設置してログインしたユーザーにそこに遷移するようなテストコードを書いていた。
いかにもテストコードなので、ここを修正。
Welcome というページを動的に生成しログインが成功したユーザーはここに飛んでくるように変更した。

http://localhost/Welcome となっているが、もちろん Welcome.html という静的なページはない。上のページのようにログインしたユーザー(ocean という施設の ocean さん)の情報を入れ込んでページを生成し、サーバから出力。ブラウザに表示させる、という仕組みだ。
この改変をもって Ver 1.0.1 とした。
1.0.0 から大した機能が加わっているわけではないが、ルーティングとページの動的生成がうまくいくかどうかは未知数だったので、その成功記念のようなものだ。
また、これを機会に対象 OS バージョンを Montery まで引き下げた。
今のところ arm64 特有の機能は使ってないので Intel & Arm の両対応になっている。
(続く)