トップ > 日医標準レセプトソフト > 技術情報 > 帳票設計(MONPE: MONTSUQI Printing Environment)開発支援ツール

帳票設計

帳票開発ツール

日医標準レセプトソフト(以下、日レセ)の帳票設計・印刷は、MONPEとdia-orcaというオープンソースの帳票開発ツールを用いて実現している。

dia-orcaは、Ubuntu 12.04 LTS(Lucid Lynx)からサポートされません。monpeへの変換・移行をお願いします。

MONPE概要

帳票印刷処理開発の流れは以下のようになる。

  1. 帳票デザインツールであるmonpe(以下、monpe)を使用して帳票を設計する。設計した帳票のことを「帳票テンプレート」と呼ぶ。
  2. 帳票テンプレートから日レセ(COBOL)で利用できるデータ構造(COPY句)を自動生成する。
  3. 日レセが提供しているORCSMKPRTというサブプロと、(2)で自動生成したCOPY句を利用して帳票印刷処理を開発する。

2.で自動生成したCOPY句を以下に示す。

プログラムリスト1.(2)で自動生成したデータ構造の例

        01  HCM06V02.
            02  HCM06V02-TEISYUTUSAKI   PIC X(6).
            02  HCM06V02-PTNUM  PIC X(20).
            02  HCM06V02-SRYY   PIC X(2).
            02  HCM06V02-SRYM   PIC X(2).
            02  HCM06V02-PREFNUM    PIC X(2).
        (省略)
    

3.のプログラム例を以下に示す。

プログラムリスト2.帳票印刷処理の例

      (省略)
       WORKING-STORAGE             SECTION.
      *    2.で自動生成したCOPY句
           COPY    "COPY.INC".
      *    印刷パラメタ
           COPY    "CPORCSMKPRT.INC".
      *
      (省略)
      *
           INITIALIZE                 ORCSMKPRTAREA
           MOVE   "HC01.sh"           TO  MKPRT-ID
      *    帳票テンプレート名
           MOVE   "HCM06V02.red"      TO  MKPRT-DIA
           MOVE   SPACE               TO  MKPRT-DEF
      *    2.で自動生成したCOPY句のデータ構造名
           MOVE   HCM06V02            TO  MKPRT-DAT
           MOVE   SYS-1031-PRTNM(2)   TO  MKPRT-PRTNM
           CALL   "ORCSMKPRT"         USING
                                      ORCSMKPRTAREA
    

帳票印刷の流れは以下のようになる。

  1. 帳票印刷の要求があると、日レセが提供しているサブプロにより以下を行う。
    1. 帳票テンプレートに入力するデータをファイルに書き出す。
    2. 帳票テンプレートのパスと、データファイルのパスを与えて、帳票印刷ツールであるred2psを実行。
  2. 帳票テンプレートとデータファイルを合成して、PostScript形式の印刷イメージを生成。
  3. プリンタスプールソフトウェア(lpr、lprngなど)が、印刷イメージをプリンタに送る。

操作方法などの情報

monpeの操作方法などの詳しい情報は、MONPEのプロジェクトページを参照して下さい。

MONPEのプロジェクトページ

dia-orcaで設計した帳票の移行

MONPEで設計した帳票とdia-orcaのものとは互換性がない。しかしながら、dia-orcaで設計した帳票をMONPEの形式に変換するツールがある。このため、近い将来、日レセの帳票は全てMONPEで設計したものになるだろう。

それでは、dia-orcaで設計した帳票をMONPEの形式に変換する方法について説明する。

まず,dia-orcaで設計した帳票に関係する以下の3つのファイルを用意する。

  1. DiaのXMLデータ(*.dia)
  2. COBOLデータフォーマット規定ファイル(*.def)
  3. COPY句(*.INC)

以下のコマンドにより、dia-orcaで設計した帳票をMONPE形式に変換する。

$ dia2red -f (1) -d (2) -i (3) -o <MONPE形式ファイル名>

1〜3は、上記のファイルに対応する。<MONPE形式ファイル名>は、MONPE形式に変換後のファイル名である。MONPE形式の帳票は拡張子は、.redである。しかし、この変換ツールだけでは不完全で、変換後のファイルをmonpeで開き、保存し直す必要がある。

多くの場合、dia-orcaで設計した帳票に関係するファイルは一箇所に固まっているので、スクリプトを用いて一括変換できる。以下に,一括変換を行うrubyスクリプトを挙げる.

プログラムリスト3.一括変換スクリプト: dia2reds.rb

#!/usr/bin/ruby -Ke

############################################################
# パス設定 - 環境に合わせる。
ORCA_DIR = "/usr/local/orca/"
FORM_DIR = ORCA_DIR + "form/"
DEF_DIR  = ORCA_DIR + "record/"
INC_DIR  = ORCA_DIR + "cobol/copy/"
OUT_DIR  = "/tmp/dia2red/" # 予め作成しておく

############################################################
# 処理
TMP_FILE = "/tmp/dia2reds.tmp"

DIA_EXT = ".dia"
DEF_EXT = ".def"
INC_EXT = ".INC"
RED_EXT = ".red"

CONVERT = "dia2red"

form_list = Dir::glob(FORM_DIR + "*" + DIA_EXT)

form_list.each do |form_path|
  form_id = File.basename(form_path, DIA_EXT)
  def_path = DEF_DIR + form_id + DEF_EXT
  inc_path = INC_DIR + form_id + INC_EXT

  print form_id

  msg = ""
  if FileTest.exist?(def_path) and FileTest.exist?(inc_path)
    out_path = OUT_DIR + form_id + RED_EXT
    system("#{CONVERT} -f #{form_path} -i #{inc_path} -d #{def_path} -o #{out_path} > #{TMP_FILE}")
    if FileTest.zero?(TMP_FILE)
      msg << " - Ok"
    else
      msg << " - Error : convert failed."
    end
    File.unlink(TMP_FILE)
  else
    msg << " - Error : can't find "
    if !FileTest.exist?(def_path)
      msg << def_path + " "
    end
    if !FileTest.exist?(inc_path)
      msg << inc_path + " "
    end
    msg.chop! # Delete last space.
  end
  print msg + ".¥n"
end

    

MONPEでは、dia-orcaからの以下の変更点により、dia-orcaで設計した通りに帳票が印刷できない。

  • 右寄せの文字位置が設計時と印刷時で誤差があるバグを修正
  • 埋め込み時の半角ASCIIを全角に変換する機能の廃止

このため、MONPE形式に変換後の帳票をdia-orcaで設計した通りに印刷するには、monpeを使用して以下の修正が必要になる。

(1) 右寄せを指定している文字オブジェクトの位置を修正

MONPEでは,帳票の設計時と印刷時の印刷結果が等しくできている。しかし、dia-orcaで設計した帳票は、右寄せの文字位置が設計時と印刷時で異なる。このため、dia-orcaで設計した帳票は、それを考慮して、設計時は右寄せ文字を少しずらして配置し、印刷時に予定通りになるように設計してある。

このような帳票をMONPE形式に変換後、MONPEで印刷した場合、設計した通り、文字位置がずれたまま印刷されるので、右寄せの文字位置を適宜修正する必要がある。

この際、red2testというテスト印刷ツールを使用すれば、仮データを帳票に入力して印刷でき、完成イメージを手軽に確認できるので便利である。

(2) 半角ASCIIを全角に変換する処理の実装

dia-orcaでは、帳票テンプレートとCOBOLデータの合成の際に、ORCAテキストオブジェクトの「ORCA半角」のプロパティを「いいえ」にすれば、COBOLデータ中の半角ASCII文字を全角文字に変換する機能を持っていた。

しかし、MONPEはこの機能を廃止した。このため、COBOLデータ中の半角ASCII文字を全角文字に変換したければ、日レセ(COBOL)で、その処理を行わなければならない。日レセでは、半角文字を全角文字に変換するサブプロを用意してあるので、それを用いれば容易に実現できる。関連ファイル名を以下にあげる。

  • ORCSKANACHK.CBL
  • CPORCSKANACHK.INC
トップ > 日医標準レセプトソフト > 技術情報 > 帳票設計(MONPE: MONTSUQI Printing Environment)開発支援ツール

このページのトップへ