Medley Developer Blog

株式会社メドレーのエンジニア・デザイナーによるブログです

COBOLとORCAについて学ぶお話

※本投稿はMEDLEYオフィシャルブログから転載したものです。元記事はこちら。

info.medley.jp

TechLunchでCOBOLORCAについて話しました

開発本部の竹内です。病気事典MEDLEYの開発を担当しております。子どもが絶賛イヤイヤ期中です。
さて先日、TechLunchという社内勉強会にてCOBOLORCAについての発表を行いましたので、その紹介をさせていただきたいと思います。

はじめに

COBOLとは?ORCAとは?の前に、「なぜ今回このテーマを選んだか」について簡単に説明させてください。

株式会社メドレーでは「医療ヘルスケア分野の課題を解決する」ために各サービスの開発・運営を行っています。
しかし、「医療ヘルスケア分野」のサービス開発・運営を行っていると言っても、実際の開発現場では一般的なWebアプリケーションやスマートフォンアプリケーションの開発を行うことが多々あります。
そのため、日々の仕事において「医療ヘルスケア分野」で業務を行っていると意識しないこともあります。
せっかく「医療×IT」の会社にいるわけなので、エンジニアとして医療に深く関わるソフトウェアについて勉強してみるのも面白いのではないか、と思ったことがテーマの選択につながっています。
また、医療ヘルスケア分野でOSSとして公開されている代表的なものとしてORCAの「日医標準レセプトソフト」がある、というのもテーマ選択の理由の一つです。
どんなソフトウェアにせよそれがOSSであれば、コードが公開されているため勉強を始めるハードルはかなり下がるため、です。

ORCAとは

ORCAプロジェクトとは、医療情報ネットワーク推進委員会にて「医師会総合情報ネットワーク構想」(1997年 情報化検討委員会)を構成するツールの一つとして認められた日本医師会の研究事業プロジェクトです。 ORCA Project: ORCAプロジェクトの概要

ORCAとは日本医師会のプロジェクトで、国民医療を改善するために医療情報の効率化・標準化を推進するために、医師・医療関係機関が無料で利用・改良できるOSSを配布しています。

現在、診療報酬を請求するための専用コンピュータ(=レセコン)は、全国の医療機関の内8割以上が使用しているそうです。ORCAプロジェクトでは「日医標準レセプトソフト(=日レセ)」というOSSが公開されています。

OSSなのでもちろんコードは公開されており、その他の技術情報も下記リンク先に詳細が掲載されています。 ORCA Project: 技術情報

f:id:medley_inc:20170417154614p:plain

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 http://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というディレクトリに入っています。
http://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

f:id:medley_inc:20170417154633p:plain

まとめ

TechLunchでORCACOBOLについて紹介しました。
軽い気持ちで調べはじめましたが、
「レセコンがOSSで配布されている」ということにまず衝撃を受け、
ORCA(日レセ)のコードがCVSで公開されている」ということにも衝撃を受け、
「コードがCOBOLである」ということにさらに衝撃を受けました。
が、同時にOSSが日本の医療を支えていることに胸が熱くなりました。技術スタックが古くとも、とても素晴らしいことだと思いました。

また、リニューアルPJもあるようで、今後の動向が興味深いですね。
ORCA次期FW開発の現状 (少し古い資料ですが)

COBOLについても、調べはじめるとなかなかに興味深い言語でしたが、やはり基本文法を理解しただけではレセコンのコードを読んで理解するまでには至りませんでした。。発表資料でも触れましたが、日レセを構成するミドルウェアであるMONTSUQIについても、ある程度理解する必要があると感じました(俺たちの戦いはこれからだ、、)

さて、医療に関わるソフトウェア&(個人的に)未知の技術であるCOBOLに触れ、心が豊かになったところで今回のブログを締めさせていただきたいと思います。
ここまでお読み下さり、どうもありがとうございました。

※勉強会資料は下記

最後に

メドレーでは、医療ヘルスケア分野の課題を解決するため、未知の言語や技術を恐れない勇気あるエンジニアを募集しています。

www.wantedly.com

www.wantedly.com

www.wantedly.com

www.medley.jp