COBOL と ORCA について学ぶお話
TechLunch でCOBOLとORCAについて話しました
開発本部の竹内です。病気事典 MEDLEY の開発を担当しております。子どもが絶賛イヤイヤ期中です。 さて先日、TechLunch という社内勉強会にてCOBOLとORCAについての発表を行いましたので、その紹介をさせていただきたいと思います。
はじめに
COBOLとは?ORCAとは?の前に、「なぜ今回このテーマを選んだか」について簡単に説明させてください。
株式会社メドレーでは「医療ヘルスケア分野の課題を解決する」ために各サービスの開発・運営を行っています。 しかし、「医療ヘルスケア分野」のサービス開発・運営を行っていると言っても、実際の開発現場では一般的な Web アプリケーションやスマートフォンアプリケーションの開発を行うことが多々あります。 そのため、日々の仕事において「医療ヘルスケア分野」で業務を行っていると意識しないこともあります。 せっかく「医療 ×IT」の会社にいるわけなので、エンジニアとして医療に深く関わるソフトウェアについて勉強してみるのも面白いのではないか、と思ったことがテーマの選択につながっています。 また、医療ヘルスケア分野でOSSとして公開されている代表的なものとしてORCAの「日医標準レセプトソフト」がある、というのもテーマ選択の理由の一つです。 どんなソフトウェアにせよそれがOSSであれば、コードが公開されているため勉強を始めるハードルはかなり下がるため、です。
ORCAとは
ORCAプロジェクトとは、医療情報ネットワーク推進委員会にて「医師会総合情報ネットワーク構想」(1997 年 情報化検討委員会)を構成するツールの一つとして認められた日本医師会の研究事業プロジェクトです。 ORCA Project: ORCA プロジェクトの概要
ORCAとは日本医師会のプロジェクトで、国民医療を改善するために医療情報の効率化・標準化を推進するために、医師・医療関係機関が無料で利用・改良できるOSSを配布しています。
現在、診療報酬を請求するための専用コンピュータ(=レセコン)は、全国の医療機関の内8割以上が使用しているそうです。ORCAプロジェクトでは「日医標準レセプトソフト(=日レセ)」というOSSが公開されています。
OSSなのでもちろんコードは公開されており、その他の技術情報も下記リンク先に詳細が掲載されています。 ORCA Project: 技術情報
COBOLとは
さて、上記リンク先を見いくと日医標準レセプトソフトのコードはCVSで公開されており、その中を見てみるとCOBOLのコードがあることがあわかります。 個人的にCOBOLについては、「名前は聞いたことあるけど、文法など詳細は知らない割になぜか良い印象を持っていない」という状態でした。 レセコンのロジックを勉強するにあたり、ついでに未知の言語であるCOBOLも勉強してみよう、という軽いノリで調べはじめました。
勉強会ではCOBOLの基本的な文法にフォーカスして紹介しています。 また、今回はCOBOLの実行環境として Docker を利用しています。
- COBOLによる HELLO, WORLD
IDENTIFICATION DIVISION.PROGRAM-ID. HELLO_WORLD.
ENVIRONMENT DIVISION.
DATA DIVISION.
PROCEDURE DIVISION.
DISPLAY "Hello, COBOL".
STOP RUN.
ORCAのコードについて
上述の通り、ORCA(日レセ)のコードはCVSで管理されているため、Macでは次のようにしてコードを取得できるかと思います。
# 参考:https://www.orca.med.or.jp/receipt/tec/cvs-jma-receipt.html\# リポジトリ取得
$ brew install cvs
$ curl https://ftp.orca.med.or.jp/pub/data/receipt/tec/orcacvs > ~/bin/orcacvs
$ chmod +x ~/bin/orcacvs
$ cvs -d :ext:anoncvs@cvs.orca.med.or.jp:/cvs co jma-receipt
実際のCOBOLのコードはcobolというディレクトリに入っています。 https://cvs.orca.med.or.jp/cgi-bin/cvsweb/jma-receipt/cobol/
見てみると、ファイルを開いてコメントを確認するまでどれがどういう用途なのかよくわかりませんでした。 ファイル内のコメントにある「コンポーネント名」と cvsweb の URL を対応付けたmarkdownを作成しましたので、興味がある方は見てみてください。
https://github.com/ise/orca-jma-receipt-study/blob/master/cobol.md
まとめ
TechLunch でORCAとCOBOLについて紹介しました。 軽い気持ちで調べはじめましたが、 「レセコンがOSSで配布されている」ということにまず衝撃を受け、 「ORCA(日レセ)のコードがCVSで公開されている」ということにも衝撃を受け、 「コードがCOBOLである」ということにさらに衝撃を受けました。 が、同時にOSSが日本の医療を支えていることに胸が熱くなりました。技術スタックが古くとも、とても素晴らしいことだと思いました。
また、リニューアル PJ もあるようで、今後の動向が興味深いですね。 ORCA 次期 FW 開発の現状 (少し古い資料ですが)
COBOLについても、調べはじめるとなかなかに興味深い言語でしたが、やはり基本文法を理解しただけではレセコンのコードを読んで理解するまでには至りませんでした。。発表資料でも触れましたが、日レセを構成するミドルウェアである MONTSUQI についても、ある程度理解する必要があると感じました(俺たちの戦いはこれからだ、、)
さて、医療に関わるソフトウェア&(個人的に)未知の技術であるCOBOLに触れ、心が豊かになったところで今回のブログを締めさせていただきたいと思います。 ここまでお読み下さり、どうもありがとうございました。
※勉強会資料は下記
speakerdeck.com最後に
メドレーでは医療業界に存在する課題に IT を駆使して取り組んでいきたいデザイナー・エンジニアを募集中です。
皆さまからのご応募お待ちしております。
www.medley.jpwww.medley.jp