ORCA

2019年11月22日 (金)

domU の orca サーバを ubuntu 18.04 にアップグレード

  1. 準備と do-release-upgrade
    $ sudo aptitude update ; sudo aptitude upgrade
    $ sudo apt-get autoremove
    $ sudo do-release-upgrade
    
  2. jma-receipt は do-release-upgrade の対象ではないので,自動的に apt line がコメントアウトされる。
    リポジトリ情報のアップデート
    サードパーティが提供するリポジトリを使わない設定にしました
    sources.list にあるサードパーティが提供するリポジトリを使わない設定にしました。アップグレード完了後、'ソフトウェアソース' ツールもしくはパッケージマネージャーを使って再び利用可能な設定にすることができます。
    続けるには [ENTER] キーを押してください
    
  3. アップグレード完了後,再起動する。
    システムのアップグレードが完了しました。
    再起動が必要です
    アップグレードを完了するには再起動が必要です。
    'Y' を選択すると再起動します。
    
  4. postgresql は自動的に 10.10 にアップグレードされるので,postgresql 9.5 は purge する。
    $ sudo service postgresql stop
    $ sudo aptitude purge postgresql-9.5 postgresql-client-9.5
    $ sudo service postgresaql start
    
  5. pg_hba.conf にホスト追加。
    host   all   all   192.168.1.0/24   trust
    
    postgresql.conf の設定。port が 5433 になってるのを 5432 に直す。
    listen_addresses = '*'
    port = 5432
    
  6. jma-receipt の apt line を修正する。xenial → bionic の書き換えはしてくれないので,手動で書き換える必要がある。
    $ cd /etc/apt/sources.list.d/
    $ sudo sh -c "sed -e 's/^# //' -e 's/ # .*//' -e 's/xenial/bionic/' jma-receipt-xenial51.list > jma-receipt-bionic51.list"
    $ sudo rm jma-receipt-xenial51*
    
    jma-receipt のアップグレード
    $ sudo aptitude update
    $ sudo aptitude upgrade
    
    データベースの初期化
    $ sudo service jma-receipt stop
    $ sudo jma-setup --noinstall
    DBHOST:		OK (PostgreSQL:localhost)
    DBUSER:		OK (orca)
    DATABASE:	OK (orca)
    DBENCODING:	OK (EUC-JP)
    OK! データベースをリストア後再度 jma-setupを実行してください
    
    データベースのリストア
    $ pg_restore -Fc -d orca orca_db.dump
    pg_restore: [archiver (db)] Error while PROCESSING TOC:
    pg_restore: [archiver (db)] Error from TOC entry 6517; 0 0 COMMENT EXTENSION plpgsql
    pg_restore: [archiver (db)] could not execute query: ERROR:  must be owner of extension plpgsql
    Command was: COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language';
         :
    pg_restore: WARNING:  no privileges could be revoked for "public"
    pg_restore: WARNING:  no privileges could be revoked for "public"
    pg_restore: WARNING:  no privileges were granted for "public"
    pg_restore: WARNING:  no privileges were granted for "public"
    WARNING: errors ignored on restore: 1
    
  7. ORCA プロジェクト・センターサーバ更新による特別処理
    $ wget http://ftp.orca.med.or.jp/pub/etc/install_modules_for_ftp.tgz 
    $ tar xvzf install_modules_for_ftp.tgz
    $ cd install_modules_for_ftp
    $ ./install_modules.sh
    Copying cachedl.rb ... done.
    Copying orcadt_verify.rb ... done.
    Copying master_license_upgrade.sh ... done.
    Copying migrate-v51_master_license_upgrade.sh ... done.
    
  8. しかる後に jma-setup
    $ sudo jma-setup
    DBHOST:		OK (PostgreSQL:localhost)
    DBUSER:		OK (orca)
    DATABASE:	OK (orca)
    DBENCODING:	OK (EUC-JP)
    DBKANRI		OK (tbl_dbkanri)
    UPDATE CHECK:	OK (online)
    DBLIST:		OK (050000-1)
    LIST DOWNLOAD:	OK (nothing)
    DBVERSION:	OK (0500001)
    データベース構造変更処理は終了しました
    
  9. monsiaj でアクセスしてプラグイン更新(多分不要),プログラム更新,マスタ更新,しかる後にスキーマチェック。
    $ wget http://ftp.orca.med.or.jp/pub/etc/jma-receipt-dbscmchk.tgz
    $ tar xvzf jma-receipt-dbscmchk.tgz
    $ cd jma-receipt-dbscmchk
    $ sudo bash jma-receipt-dbscmchk.sh
    
  10. シャットダウン時に RabbitMQ のシャットダウンに時間がかかってしまう問題の workaround
    以下のメッセージがコンソールに出て,カウントアップが続いてなかなか終了しない。
    A stop job is running for RabbitMQ Messaging Server (10s / 1min 33s)
    
    以下のファイルを書き換えるとすぐに終了するようになる。
    /lib/systemd/system/rabbitmq-server.service
    [Unit]
    Description=RabbitMQ Messaging Server
    After=network.target
    
    [Service]
    Type=simple
    User=rabbitmq
    SyslogIdentifier=rabbitmq
    LimitNOFILE=65536
    ExecStart=/usr/sbin/rabbitmq-server
    ExecStartPost=/usr/lib/rabbitmq/bin/rabbitmq-server-wait
    # ExecStop=/usr/sbin/rabbitmqctl stop ## ここを shutdown に変える
    ExecStop=/usr/sbin/rabbitmqctl shutdown
    
    [Install]
    WantedBy=multi-user.target
    

ubuntu 18.04 の orca 5.1 は 2022年の 9月までサポートされる予定。

2019年11月 8日 (金)

orca 5.1 に移行

今更ながら orca 5.0 を orca 5.1 にアップグレードしてみた(ubuntu 16.04)。OpenDolphin の方は,何も変更しなくて大丈夫だった。
  1. まずは最新状態までアップデート
    $ sudo aptitude update
    $ sudo aptitude upgrade
    $ sudo apt-get autoremove
    $ sudo reboot
    
  2. データベースのスキーマチェック
    $ wget http://ftp.orca.med.or.jp/pub/etc/jma-receipt-dbscmchk.tgz 
    $ tar xvzf jma-receipt-dbscmchk.tgz
    $ cd jma-receipt-dbscmchk
    $ sudo bash jma-receipt-dbscmchk.sh
    ORCA Project Jma-Receipt Database Schema Check (3.0.3)
    == Operating System information ==
      Linux orca 4.4.0-166-generic #195-Ubuntu SMP Tue Oct 1 09:35:25 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
      DISTRIB_ID=Ubuntu
      DISTRIB_RELEASE=16.04
      DISTRIB_CODENAME=xenial
      DISTRIB_DESCRIPTION="Ubuntu 16.04.6 LTS"
    == Database System information ==
      PostgreSQL version 9.5
      Database Name : orca
    == Package information ==
      ii  jma-receipt    1:5.0.0-u5jma1 amd64        JMA Standard Receipt Computer Software
      version   5.0.0-1 (050000-1)
      ii  panda-server   1:2.0.0+p59-u5jma1 amd64        OLTP monitor and client server GUI(server)
    == Schema Check information ==
      Jma-Receipt Schema Version (050000-1)
      チェックファイル(public):[ orcadbschema-sum-public.ver500 : 2019-10-10 15:50:36 ]
      チェックファイル(public):[ orcadbschema-public.ver500 : 2019-10-10 16:00:30 ]
      チェックファイル(master):[ orcadbschema-master.ver500 : 2018-11-13 15:05:43 ]
    現在のスキーマバージョンは5.0.0です。
    スキーマの整合性をチェックします。
    --------------------------------------------------------
      データベースの整合性チェックは正常に終了しました。
    --------------------------------------------------------
    
  3. apt line の更新
    $ sudo rm /etc/apt/sources.list.d/jma-receipt-xenial50.list
    $ sudo wget -O /etc/apt/sources.list.d/jma-receipt-xenial51.list https://ftp.orca.med.or.jp/pub/ubuntu/jma-receipt-xenial51.list
    
  4. update and upgrade
    $ sudo aptitude update
    $ sudo aptitude upgrade
    以下のパッケージが更新されます:
      jma-receipt jma-receview libmondai1 monpe monpe-common monpe-libs panda-dev panda-libs panda-server
    9 個のパッケージを更新、 0 個を新たにインストール、 0 個を削除予定、0 個が更新されていない。
    39.1 M バイトのアーカイブを取得する必要があります。 展開後に 8,031 k バイトのディスク領域が新たに消費されます。
    先に進みますか? [Y/n/?] y
     :
    設定ファイル '/etc/jma-receipt/jppinfo.list'
     ==> これはインストールしてから (あなたかスクリプトによって) 変更されています。
     ==> パッケージ配布元が更新版を提供しています。
       どうしますか? 以下の選択肢があります:
        Y か I  : パッケージメンテナのバージョンをインストールする
        N か O  : 現在インストールされている自分のバージョンを残す
          D     : 両バージョンの差異を表示する
          Z     : 状況を調査するためにシェルを開始する
     デフォルトでは現在使っている自分のバージョンを残します。
    *** jppinfo.list (Y/I/N/O/D/Z) [デフォルト=N] ? y
     :
    現在の状態: 0 (-9) upgradable。
    
  5. ORCA プロジェクト・センターサーバ更新による特別処理
    $ wget http://ftp.orca.med.or.jp/pub/etc/install_modules_for_ftp.tgz 
    $ tar xvzf install_modules_for_ftp.tgz
    $ cd install_modules_for_ftp
    $ ./install_modules.sh
    Copying cachedl.rb ... done.
    Copying orcadt_verify.rb ... done.
    Copying master_license_upgrade.sh ... done.
    Copying migrate-v51_master_license_upgrade.sh ... done.
    
  6. データベースセットアップ
    $ sudo jma-setup
    DBHOST:         OK (PostgreSQL:localhost)
    DBUSER:         OK (orca)
    DATABASE:       OK (orca)
    DBENCODING:     OK (EUC-JP)
    DBKANRI         OK (tbl_dbkanri)
    UPDATE CHECK:   OK (online)
    DBLIST:         OK (050100-1)
    LIST DOWNLOAD:  FILE (58)
    DOWNLOAD:       ..........................................................OK
    EXTRACT:        ..........................................................OK
    UPDATE:         ..........................................................OK
    DBVERSION:      OK (0501001)
    データベース構造変更処理は終了しました
    
  7. sky.sh 様の帳票用パッケージリストを追加
    $ sudo vi /etc/jma-receipt/jppinfo.list
    ---
    :root: /var/lib/jma-receipt/plugin
    :list:
     - http://ftp.orca.med.or.jp/pub/receipt/plugin/5.0.0/jpplist1.yml
     - http://ftp.orca.med.or.jp/pub/receipt/plugin/5.0.0/jpplist2.yml
     - http://www.sky.sh/orca/plugin/5.1.0/skysh.yml
    :linkprefix: /usr/local/site-jma-receipt
    :verify: true
    
  8. 古い帳票情報を削除
    $ psql orca -c "delete from tbl_plugin where name='skysh';"
    DELETE 1
    
  9. sky.sh 様のキーリングの確認
    $ gpg --list-keys
    /home/orca/.gnupg/pubring.gpg
    -----------------------------
    pub   1024D/ED7FC485 2010-01-29
    uid                  support (plugin) 
    sub   2048g/A033594A 2010-01-29
    
    pub   2048R/268E931D 2013-09-21
    uid                  skysh (hasegawa) 
    sub   2048R/E4A273AB 2013-09-21
    
    sky.sh 様のキーリングがない場合は入れる
    $ wget http://www.sky.sh/orca/plugin/skysh.pub
    $ gpg --import skysh.pub
    
  10. ここで一旦リブート
  11. monsiaj でアクセスすると
    「マスタデータ移行処理が未実施です。管理者まで連絡してください」と表示されるが無視する。
  12. プラグイン更新(地方公費, 帳票, sky.sh様) → プログラム更新 → マスタ更新
  13. エラー確認とスキーマチェック
    $ grep ERROR /var/log/jma-receipt/orca-db-install-5.1.0.log
    $ cd jma-receipt-dbscmchk
    $ sudo bash jma-receipt-dbscmchk.sh
    

マスタデータの移行処理

  1. 保険者マスタの更新
    $ wget http://ftp.orca.med.or.jp/pub/etc/tools/jma-master-setup.tgz 
    $ tar xvzf jma-master-setup.tgz
    $ cd jma-master-setup
    $ ./jma-master-setup -h
    使用法: jma-master-setup [オプション] <医療機関識別番号>
    処理内容
      -c       : 整合チェック(デフォルト)
      -r       : セットアップ(マスターデータ置換)
    マスタ指定(必須):
      -m    7  : 相互作用マスタ
            9  : 保険者マスタ
      -h    このヘルプを表示する
    バグを発見したら  宛に報告してください
    
    $ ./jma-master-setup -r -m 9 1
    セットアップ処理を開始します。よろしいですか? (Y/N):y
    セットアップデータをダウンロードします。
    セットアップデータをダウンロードしました。
    保険者マスタ セットアップデータについて
      管理番号 :[ R-040200-1-20190528-1 ]
      作成日  :[ 2019-05-31 13:54:38 ]
      レコード数:[ 23760 ]
    DELETE 23760
    COPY 23760
    UPDATE 23760
    UPDATE 1
    従サーバへの処理、又はリプリケーションを確認してください。
    
  2. マスタデータ移行処理 (結構時間かかる)
    $ sudo /usr/lib/jma-receipt/patch-lib/scripts/tools/jma-migrate
    マスタデータ移行処理を行います。
    よろしいですか? (y/n) y
    処理を開始しました : 2019-10-29 16:36:28
    該当テーブルをバックアップします。[/var/tmp/jma-migrate-v51]
    マスタ更新処理を行います。
    マスタ更新処理 医療機関識別番号 [ 01 ] 開始
     :
    点数テーブルは終了しました。
    点数付加テーブルを開始します。
    2019/10/29/16:50:26 P:dbstub_main.c:217:module ORCBMIGTENSUPLUS: 01,
    *(ORCBMIGTENSUPLUS)* SRYCD KENSU [       0 ]
    点数付加テーブルは終了しました。
    データ移行処理 医療機関識別番号 [ 01 ] 終了
    移行対象テーブルを削除しました。
    処理は終了しました : 2019-10-29 16:50:27
    
  3. 処理結果の確認
    $ ls /var/log/jma-receipt/*-prf.csv
    /var/log/jma-receipt/01ORCBMIGADRS-prf.csv      /var/log/jma-receipt/01ORCBMIGSRYCDCHG-prf.csv
    /var/log/jma-receipt/01ORCBMIGCHK-prf.csv       /var/log/jma-receipt/01ORCBMIGTENSU-prf.csv
    /var/log/jma-receipt/01ORCBMIGHKNJAINF-prf.csv
    
  4. monsiaj でマスタ更新,その後 terminal でログの確認
    ERR ファイルができたけど,これは問題なさそう。
    $ find /var/lib/jma-receipt/master/01/orca-mstlog -maxdepth 1 -size +0c -name "*.ERR"
    /var/lib/jma-receipt/master/01/orca-mstlog/ORCADBR-20160414-1.dat.ERR
    $ cat /var/lib/jma-receipt/master/01/orca-mstlog/ORCADBR-20160414-1.dat.PRF | iconv -f EUC-JP
    【PGID:ORCMUP0202.CBL】   2016.05.19  01
    削除対象なし                   D,190141610,
    入院レセ記載略称マスタ登録済み I,190141610,復リ入1
    削除対象なし                   D,190141710,
    入院レセ記載略称マスタ登録済み I,190141710,復リ入1生
    削除対象なし                   D,190141810,
    入院レセ記載略称マスタ登録済み I,190141810,復リ入2
    削除対象なし                   D,190141910,
    入院レセ記載略称マスタ登録済み I,190141910,復リ入2生
    削除対象なし                   D,190138010,
    入院レセ記載略称マスタ登録済み I,190138010,後使
    削除対象なし                   D,190121010,
    入院レセ記載略称マスタ登録済み I,190121010,精救$ cat /var/log/jma-receipt/
    
  5. monsiaj の初期画面で F8「診療情報」で確認。
    マスタデータ移行という表示が出る。件数>0 のものがユーザー管理に移行されたマスタ。
    Ver5.1 点数マスタ移行処理(ORCBMIGTENSU),処理日,2019.10.30,01,元町皮ふ科
    結果,診療コード,開始日,終了日,名称,内容,項目,オリジナル,ユーザ,更新日
    ユーザー管理,739200000,20140401,99999999,液体酸素・定置式液化酸素貯槽(CE),項目値変更,旧点数/金額,0.19000,
    0.18000,20191030
    特定器材,739210000,00000000,20140331,液体酸素・可搬式液化酸素容器(LGC),金額,,,0.30,20190930
    特定器材,739210000,20140401,99999999,液体酸素・可搬式液化酸素容器(LGC),金額,,,0.31,20190930
    特定器材,739220000,00000000,20140331,酸素ボンベ・大型,金額,,,0.40,20190930
    特定器材,739220000,20140401,99999999,酸素ボンベ・大型,金額,,,0.41,20190930
    特定器材,739230000,00000000,20140331,酸素ボンベ・小型,金額,,,2.25,20190930
    特定器材,739230000,20140401,99999999,酸素ボンベ・小型,金額,,,2.31,20190930
    特定器材,739240000,00000000,20060331,液体酸素・定置式液化酸素貯槽(CE)(離島等),金額,,,0.30,20190930
    特定器材,739240000,20060401,20140331,液体酸素・定置式液化酸素貯槽(CE)(離島等),金額,,,0.27,20190930
    特定器材,739240000,20140401,99999999,液体酸素・定置式液化酸素貯槽(CE)(離島等),金額,,,0.28,20190930
    特定器材,739250000,00000000,20140331,液体酸素・可搬式液化酸素容器(LGC)(離島等),金額,,,0.45,20190930
    特定器材,739250000,20140401,99999999,液体酸素・可搬式液化酸素容器(LGC)(離島等),金額,,,0.46,20190930
    特定器材,739260000,00000000,20140331,酸素ボンベ・大型(離島等),金額,,,0.60,20190930
    特定器材,739260000,20140401,99999999,酸素ボンベ・大型(離島等),金額,,,0.62,20190930
    特定器材,739270000,00000000,20140331,酸素ボンベ・小型(離島等),金額,,,3,20190930
    特定器材,739270000,20140401,99999999,酸素ボンベ・小型(離島等),金額,,,3.,20190930
    
    当院に関係するものはなし。

2018年1月14日 (日)

domU の orca サーバを ubuntu 16.04 にアップグレード

まずは autoremove
$ sudo apt-get autoremove
しかる後にアップグレード。
$ sudo do-release-upgrade
jma-receipt は do-release-upgrade の対象ではないので,自動的に apt line がコメントアウトされる。
リポジトリ情報のアップデート
サードパーティが提供するリポジトリを使わない設定にしました
sources.list にあるサードパーティが提供するリポジトリを使わない設定にしました。アップグレード完了後、'ソフトウェアソース' ツールもしくはパッケージマネージャーを使って再び利用可能な設定にすることができます。
設定ファイルについていくつか聞かれるが,いずれもパッケージメンテナのバージョンをインストールする
設定ファイル '/etc/cups/cups-browsed.conf'
 ==> これはインストールしてから (あなたかスクリプトによって) 変更されています。
設定ファイル /etc/postgresql-common/createcluster.conf の新しいバージョン (/tmp/postgresql-common.6101P1) が利用可能ですが、現在インストールされているバージョンは、ローカルで変更されています。
アップグレード完了後,再起動する。
システムのアップグレードが完了しました。
再起動が必要です
アップグレードを完了するには再起動が必要です。
'Y' を選択すると再起動します。
再起動後に,postgresql 9.3 を purge する。これで postgresql 9.5 が立ち上がる。
$ sudo service postgresql stop
$ sudo aptitude purge postgresql-9.3 postgresql-client-9.3
$ sudo service postgresaql start
jma-receipt の apt line を修正する。trusty → xenial の書き換えはしてくれないので,手動で書き換える必要がある。
$ cd /etc/apt/sources.list.d/
$ sudo sh -c "sed -e 's/^# //' jma-receipt-trusty50.list | sed 's/#.*$//' | sed 's/trusty/xenial/' > jma-receipt-xenial50.list"
$ sudo rm jma-receipt-trusty50*
jma-receipt のアップグレード
$ sudo aptitude update
$ sudo aptitude upgrade
データベースの初期化
$ sudo service jma-receipt stop
$ sudo jma-setup --noinstall
DBHOST:		OK (PostgreSQL:localhost)
DBUSER:		OK (orca)
DATABASE:	OK (orca)
DBENCODING:	OK (EUC-JP)
OK! データベースをリストア後再度 jma-setupを実行してください
データベースのリストア
$ pg_restore -Fc -d orca orca_db.dump
pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 6067; 0 0 COMMENT EXTENSION plpgsql
pg_restore: [archiver (db)] could not execute query: ERROR:  must be owner of extension plpgsql
    Command was: COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'
 :
pg_restore: WARNING:  no privileges could be revoked for "public"
pg_restore: WARNING:  no privileges could be revoked for "public"
pg_restore: WARNING:  no privileges were granted for "public"
pg_restore: WARNING:  no privileges were granted for "public"
WARNING: errors ignored on restore: 1
もう一回 jma-setup
$ sudo jma-setup
DBHOST:		OK (PostgreSQL:localhost)
DBUSER:		OK (orca)
DATABASE:	OK (orca)
DBENCODING:	OK (EUC-JP)
DBKANRI		OK (tbl_dbkanri)
UPDATE CHECK:	OK (online)
DBLIST:		OK (050000-1)
LIST DOWNLOAD:	OK (nothing)
DBVERSION:	OK (0500001)
データベース構造変更処理は終了しました
pg_hba.conf の設定
host   all   all   192.168.1.0/24   trust
postgresql.conf の設定
listen_addresses = '*'
port = 5432
リブート後,monsiaj でアクセスしてプログラム更新,マスタ更新,しかる後にスキーマチェック。
$ wget http://ftp.orca.med.or.jp/pub/etc/jma-receipt-dbscmchk.tgz
$ tar xvzf jma-receipt-dbscmchk.tgz
$ cd jma-receipt-dbscmchk
$ sudo bash jma-receipt-dbscmchk.sh
ubuntu 16.04 の orca 5.0 は 2020年の 9月までサポートされる予定。

2017年12月16日 (土)

orca 5.0 に移行

orca 4.8 を orca 5.0 にアップグレードしてみた(ubuntu 14.04)。OpenDolphin の方は,何も変更しなくて大丈夫だった。
  1. まずは最新状態までアップデート
    $ sudo aptitude update
    $ sudo aptitude dist-upgrade
    $ sudo apt-get autoremove
    $ sudo reboot
    
  2. データベースのスキーマチェック
    $ wget http://ftp.orca.med.or.jp/pub/etc/jma-receipt-dbscmchk.tgz 
    $ tar xvzf jma-receipt-dbscmchk.tgz
    $ cd jma-receipt-dbscmchk
    $ sudo bash jma-receipt-dbscmchk.sh
    ORCA Project Jma-Receipt Database Schema Check (2.0)
    == Operating System information ==
      Linux orca 3.13.0-129-generic #178-Ubuntu SMP Fri Aug 11 12:48:20 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
      DISTRIB_ID=Ubuntu
      DISTRIB_RELEASE=14.04
      DISTRIB_CODENAME=trusty
      DISTRIB_DESCRIPTION="Ubuntu 14.04.5 LTS"
    == Database System information ==
      PostgreSQL version 9.3
    == Package information ==
      ii  jma-receipt                          1:4.8.0-u4jma1                             amd64        JMA Standard Receipt Computer Software
      version   4.8.0-1 (040800-1)
    == Schema Check information ==
      Jma-Receipt Schema Version (040800-1)
      チェックファイル:[ orcadbschema.ver480 : 2017-06-21 13:41:28 ]
    現在のスキーマバージョンは4.8.0です。
    スキーマの整合性をチェックします。
    --------------------------------------------------------
      データベースの整合性チェックは正常に終了しました。
    --------------------------------------------------------
    
  3. apt line の更新
    $ sudo rm /etc/apt/sources.list.d/jma-receipt-trusty48.list
    $ sudo wget -O /etc/apt/sources.list.d/jma-receipt-trusty50.list https://ftp.orca.med.or.jp/pub/ubuntu/jma-receipt-trusty50.list
    
  4. keyring の追加
    $ wget https://ftp.orca.med.or.jp/pub/ubuntu/archive.key
    $ sudo apt-key add archive.key
    $ apt-key list
     :
    pub   1024D/69C4E4D0 2007-09-03
    uid                  ORCA support 
    sub   2048g/B4E6D879 2007-09-03
    
    pub   4096R/8BE1D5BB 2016-07-07
    uid                  ORCA Support 
    sub   4096R/51E031AB 2016-07-07
    
  5. update and upgrade
    $ sudo aptitude update
    $ sudo aptitude dist-upgrade
    以下のパッケージが更新されます:
      curl jma-receipt jma-receview jma-receview-server libcurl3 libcurl3-gnutls libgtkpanda2.0-0 libmondai1
      libxcursor1 libxfont1 monpe monpe-common monpe-libs panda-dev panda-libs panda-server
    16 個のパッケージを更新、 0 個を新たにインストール、 1 個を削除予定、0 個が更新されていない。
    36.9 M バイトのアーカイブを取得する必要があります。 展開後に 14.4 M バイトのディスク領域が新たに消費されます。
    先に進みますか? [Y/n/?]
     :
    設定ファイル '/etc/jma-receipt/jppinfo.list'
     ==> これはインストールしてから (あなたかスクリプトによって) 変更されています。
     ==> パッケージ配布元が更新版を提供しています。
       どうしますか? 以下の選択肢があります:
        Y か I  : パッケージメンテナのバージョンをインストールする
        N か O  : 現在インストールされている自分のバージョンを残す
          D     : 両バージョンの差異を表示する
          Z     : 状況を調査するためにシェルを開始する
     デフォルトでは現在使っている自分のバージョンを残します。
    *** jppinfo.list (Y/I/N/O/D/Z) [デフォルト=N] ? y
     :
    現在の状態: 更新が 0 個 [-16]。
    
  6. データベースセットアップ
    $ sudo jma-setup
    DBHOST:		OK (PostgreSQL:localhost)
    DBUSER:		OK (orca)
    DATABASE:	OK (orca)
    DBENCODING:	OK (EUC-JP)
    DBKANRI		OK (tbl_dbkanri)
    UPDATE CHECK:	OK (online)
    DBLIST:		OK (050000-1)
    LIST DOWNLOAD:	FILE (51)
    DOWNLOAD:	...................................................OK
    EXTRACT:	...................................................OK
    UPDATE:		...................................................OK
    DBVERSION:	OK (0500001)
    データベース構造変更処理は終了しました
    
  7. CLAIM サーバ起動設定
    $ sudo dpkg-reconfigure jma-receipt
    
    • jma-receipt 用に dbredirector をスタートしますか <いいえ>
    • glserver の SSL を有効にしますか <いいえ>
    • jma-receipt 用に claim server をスタートしますか <はい>
    • claim server が接続待ちするポートを入力して下さい <了解>
    $ ps x | grep claim
    16843 ?        Sl     0:00 /usr/bin/ruby1.9.1 /usr/lib/jma-receipt/scripts/claim/rb/clm_rcv.rb 8210
    
  8. sky.sh 様の帳票用パッケージリストを追加
    $ sudo vi /etc/jma-receipt/jppinfo.list
    ---
    :root: /var/lib/jma-receipt/plugin
    :list:
     - http://ftp.orca.med.or.jp/pub/receipt/plugin/5.0.0/jpplist1.yml
     - http://ftp.orca.med.or.jp/pub/receipt/plugin/5.0.0/jpplist2.yml
     - http://www.sky.sh/orca/plugin/5.0.0/skysh.yml
    :linkprefix: /usr/local/site-jma-receipt
    :verify: true
    
    古い帳票情報を削除
    $ psql orca -c "delete from tbl_plugin where name='skysh';"
    DELETE 2
    
    キーリングの追加
    $ gpg --list-keys
    /home/orca/.gnupg/pubring.gpg
    -----------------------------
    pub   1024D/ED7FC485 2010-01-29
    uid                  support (plugin) 
    sub   2048g/A033594A 2010-01-29
    
    sky.sh 様のキーリングがない場合は入れる
    $ wget http://www.sky.sh/orca/plugin/skysh.pub
    $ gpg --import skysh.pub
    確認します
    $ gpg --list-keys
    /home/orca/.gnupg/pubring.gpg
    -----------------------------
    pub   1024D/ED7FC485 2010-01-29
    uid                  support (plugin) 
    sub   2048g/A033594A 2010-01-29
    
    pub   2048R/268E931D 2013-09-21
    uid                  skysh (hasegawa) 
    sub   2048R/E4A273AB 2013-09-21
    
    ここで一旦リブート
  9. monsiaj でアクセスする(URL は "http://orca:8000/rpc/"
    プラグイン更新→プログラム更新→マスタ更新
    ライセンスマスタ更新に「キー取得」が必要になった。マスタ更新画面で「キー取得」する。キーを取得していないと以下のエラーが出る。
    マスタ更新は異常終了しました
    アクセスキーがありません
    
    なお,キーの再取得が必要になった場合は,医療機関専用サイトにログインして,「アクセスキー」→「再発行」する。
  10. monsiaj のカスタマイズ
    以前のバージョンは,ソースを github からダウンロードする様になっていたが,新バージョンは普通にダウンロードサイトから落とせるようになった。以前のバージョンと同じくカスタマイズして,ソースは BitBucket さんに上げた

2015年4月17日 (金)

domU の orca サーバ 12.04 を 14.04 にアップグレード

まずは autoremove
$ sudo apt-get autoremove
しかる後にアップグレード。
$ sudo do-release-upgrade
jma-receipt は do-release-upgrade の対象ではないので,自動的に apt line がコメントアウトされる。
リポジトリ情報のアップデート
サードパーティが提供するリポジトリを使わない設定にしました
sources.list にあるサードパーティが提供するリポジトリを使わない設定にしました。アップグレード完了後、'ソフトウェアソース'
ツールもしくはパッケージマネージャーを使って再び利用可能な設定にすることができます。
続けるには [ENTER] キーを押してください
postgres もアップグレード後に設定し直す必要がある。
メジャーバージョン 9.1 はもはや使われません
PostgreSQL バージョン 9.1 は既に使われなくなっていますが、サーバおよびクライアント用パッケージがインス
  :
詳細は /usr/share/doc/postgresql-common/README.Debian.gz を参照してください。
アップグレードは dolphin サーバと同じく,postgres 関連のエラーで終了する。気にしないで新しいカーネルで再起動する。
処理中にエラーが発生しました:
  :
アップグレードは完了しましたが、アップグレード中にいくつかのエラーが発生しました。
続けるには [ENTER] キーを押してください
再起動後に,postgresql 9.1 を purge すると,自動的に postgres-9.3 が設定される。
$ sudo service postgresql stop
$ sudo aptitude purge postgresql-9.1
jma-receipt の apt line を修正する。precise → trusty の書き換えはしてくれないので,手動で書き換える必要がある。
$ cd /etc/apt/sources.list.d/
$ sudo sh -c "sed -e 's/^# //' jma-receipt-precise48.list | sed 's/#.*$//' | sed 's/precise/trusty/' > jma-receipt-trusty48.list"
$ sudo rm jma-receipt-precise48*
jma-receipt のアップグレード
$ sudo aptitude update
$ sudo aptitude upgrade
CLAIM モジュール不具合修正パッチ適用
$ wget https://ftp.orca.med.or.jp/pub/data/receipt/outline/update/claim_update.tar.gz
$ tar xvzf claim_update.tar.gz
$ sudo bash claim_update.sh
claim_update_.log.gzを作成しました。
データベースの初期化
$ sudo service jma-receipt stop
$ sudo jma-setup --noinstall
DBHOST:		OK (PostgreSQL:localhost)
DBUSER:		OK (orca)
DATABASE:	OK (orca)
DBENCODING:	OK (EUC-JP)
OK! データベースをリストア後再度 jma-setupを実行してください
データベースのリストア
$ pg_restore -Fc -d orca orca_db.dump
pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 5177; 0 0 COMMENT EXTENSION plpgsql
pg_restore: [archiver (db)] could not execute query: ERROR:  must be owner of extension plpgsql
    Command was: COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language';

pg_restore: WARNING:  no privileges could be revoked for "public"
pg_restore: WARNING:  no privileges could be revoked for "public"
pg_restore: WARNING:  no privileges were granted for "public"
pg_restore: WARNING:  no privileges were granted for "public"
WARNING: errors ignored on restore: 1
もう一回 jma-setup
$ sudo jma-setup
BHOST:		OK (PostgreSQL:localhost)
DBUSER:		OK (orca)
DATABASE:	OK (orca)
DBENCODING:	OK (EUC-JP)
DBKANRI		OK (tbl_dbkanri)
UPDATE CHECK:	OK (online)
DBLIST:		OK (040800-1)
LIST DOWNLOAD:	OK (nothing)
DBVERSION:	OK (0408001)
データベース構造変更処理は終了しました
pg_hba.conf の設定
host   all   all   192.168.1.0/24   trust
postgresql.conf の設定
listen_addresses = '*'
リブート後,monsiaj でアクセスしてプログラム更新,マスタ更新,しかる後にスキーマチェック。
$ wget http://ftp.orca.med.or.jp/pub/etc/jma-receipt-dbscmchk.tgz
$ tar xvzf jma-receipt-dbscmchk.tgz
$ cd jma-receipt-dbscmchk
$ sudo bash jma-receipt-dbscmchk.sh
ubuntu 14.04 の orca 4.8 は 2017年の 9月までサポートされる予定。

2015年3月27日 (金)

orca 4.8 に移行

monsiaj をアップデートした勢いで orca 4.7 から orca 4.8 に移行した(いずれも ubuntu 12.04)。 手順書どおりで特に問題なかった。
  1. まずは最新状態までアップデート
    $ sudo aptitude update
    $ sudo aptitude upgrade
    
  2. データベースのスキーマチェック
    $ sudo service jma-receipt stop
    $ wget http://ftp.orca.med.or.jp/pub/etc/jma-receipt-dbscmchk.tgz 
    $ tar xvzf jma-receipt-dbscmchk.tgz
    $ cd jma-receipt-dbscmchk
    $ sudo bash jma-receipt-dbscmchk.sh
    RCA Project Jma-Receipt Database Schema Check (1.1)
    == Operating System information ==
      Linux orca 3.2.0-79-generic #115-Ubuntu SMP Thu Mar 12 14:18:19 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
      DISTRIB_ID=Ubuntu
      DISTRIB_RELEASE=12.04
      DISTRIB_CODENAME=precise
      DISTRIB_DESCRIPTION="Ubuntu 12.04.5 LTS"
    == Database System information ==
      PostgreSQL version 9.1
    == Package information ==
      ii  jma-receipt                      1:4.7.0-u3jma1                      JMA Standard Receipt Computer Software
      version   4.7.0-1 (040700-1)
    == Schema Check information ==
      Jma-Receipt Schema Version (040700-1)
      チェックファイル:[ orcadbschema.ver470 : 2014-11-14 13:44:47 ]
    現在のスキーマバージョンは4.7.0です。
    スキーマの整合性をチェックします。
    --------------------------------------------------------
      データベースの整合性チェックは正常に終了しました。
    --------------------------------------------------------
    
  3. apt line の更新
    /etc/apt/sources.list.d/jma-receipt-precise47.list を jma-receipt-precise48.list にリネームし,precise4.7 を precise4.8 に書き換える。
    deb     http://ftp.orca.med.or.jp/pub/ubuntu precise4.8 jma
    deb-src http://ftp.orca.med.or.jp/pub/ubuntu precise4.8 jma
    deb     http://ftp.orca.med.or.jp/pub/ubuntu precise-common jma
    deb-src http://ftp.orca.med.or.jp/pub/ubuntu precise-common jma
    
  4. update and upgrade
    $ sudo aptitude update
    $ sudo aptitude upgrade
      :
    設定ファイル `/etc/jma-receipt/jppinfo.list'
     ==> これはインストールしてから (あなたかスクリプトによって) 変更されています。
     ==> パッケージ配布元が更新版を提供しています。
       どうしますか? 以下の選択肢があります:
        Y か I  : パッケージメンテナのバージョンをインストールする
        N か O  : 現在インストールされている自分のバージョンを残す
          D     : 両バージョンの差異を表示する
          Z     : 状況を調査するためにシェルを開始する
     デフォルトでは現在使っている自分のバージョンを残します。
    *** jppinfo.list (Y/I/N/O/D/Z) [デフォルト=N] ? y
      :
    現在の状態: 更新が 0 個 [-77]。
    $
    
  5. データベースセットアップ
    $ sudo jma-setup
    DBHOST:		OK (PostgreSQL:localhost)
    DBUSER:		OK (orca)
    DATABASE:	OK (orca)
    DBENCODING:	OK (EUC-JP)
    DBKANRI		OK (tbl_dbkanri)
    UPDATE CHECK:	OK (online)
    DBLIST:		OK (040800-1)
    LIST DOWNLOAD:	FILE (54)
    DOWNLOAD:	......................................................OK
    EXTRACT:	......................................................OK
    UPDATE:		......................................................OK
    DBVERSION:	OK (0408001)
    データベース構造変更処理は終了しました
    
  6. これまで user id と password の管理は,gluseradd を使って /etc/jma-receipt/passwd ファイルで行っていたが,ver 4.8.0 ではデータベースの tbl_password に入れて管理するようになったようだ。以下のコマンドで,/etc/jma-receipt/passwd ファイルから id,password を抜き出してテーブルに移し替えてくれる。orca 権限で実行できる。
    $ bash /usr/lib/jma-receipt/bin/passwd_store.sh
    パスワード設定処理 ... 終了しました。
    
  7. CLAIM モジュール不具合修正パッチ適用
    $ wget https://ftp.orca.med.or.jp/pub/data/receipt/outline/update/claim_update.tar.gz
    $ tar xvzf claim_update.tar.gz
    $ sudo bash claim_update.sh
    claim_update_.log.gzを作成しました。
    $ zcat claim_update_.log.gz
      :
    ii  jma-receipt                      1:4.8.0-u3jma1                      JMA Standard Receipt Computer Software
    ii  panda-dev                        1:1.4.9+p5-u3jma1                   Development files for panda
    ii  panda-libs                       1:1.4.9+p5-u3jma1                   Development files for panda
    ii  panda-server                     1:1.4.9+p5-u3jma1                   OLTP monitor and client server GUI(server)
    ii  libmondai1                       1:1.4.9+p0-u3jma1                   MON Data Access Interface library
    ii  monpe                            0.6.20+p12-u3jma1                   MON Printing Environment
    ii  monpe-common                     0.6.20+p12-u3jma1                   MON Printing Environment (common files)
    ii  monpe-libs                       0.6.20+p12-u3jma1                   MON Printing Environment (library)
    
  8. CLAIM サーバ起動設定
    $ sudo dpkg-reconfigure jma-receipt
    $ ps x | grep claim
    8169 ?        Sl     0:00 /usr/bin/ruby1.9.1 /usr/lib/jma-receipt/scripts/claim/rb/clm_rcv.rb 8210
    
  9. sky.sh 様帳票用のパッケージリストを追加
    $ sudo vi /etc/jma-receipt/jppinfo.list
    ---
    :root: /var/lib/jma-receipt/plugin
    :list:
     - http://ftp.orca.med.or.jp/pub/receipt/plugin/4.8.0/jpplist1.yml
     - http://ftp.orca.med.or.jp/pub/receipt/plugin/4.8.0/jpplist2.yml
     - http://www.sky.sh/orca/plugin/4.8.0/skysh.yml  ←追加します
    :linkprefix: /usr/local/site-jma-receipt
    :verify: true
    
  10. 再起動する
    $ sudo reboot
    
  11. monsiaj でログインして,プログラム更新,マスタ更新実行
  12. データベースのスキーマをチェック
    $ cd jma-receipt-dbscmchk
    $ sudo bash jma-receipt-dbscmchk.sh
    
    ORCA Project Jma-Receipt Database Schema Check (1.1)
    == Operating System information ==
      Linux orca 3.2.0-79-generic #115-Ubuntu SMP Thu Mar 12 14:18:19 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
      DISTRIB_ID=Ubuntu
      DISTRIB_RELEASE=12.04
      DISTRIB_CODENAME=precise
      DISTRIB_DESCRIPTION="Ubuntu 12.04.5 LTS"
    == Database System information ==
      PostgreSQL version 9.1
    == Package information ==
      ii  jma-receipt                      1:4.8.0-u3jma1                      JMA Standard Receipt Computer Software
      version   4.8.0-1 (040800-1)
    == Schema Check information ==
      Jma-Receipt Schema Version (040800-1)
      チェックファイル:[ orcadbschema.ver480 : 2015-02-24 17:36:51 ]
    現在のスキーマバージョンは4.8.0です。
    スキーマの整合性をチェックします。
    --------------------------------------------------------
      データベースの整合性チェックは正常に終了しました。
    --------------------------------------------------------
    
  13. 診療会計テーブルのデータ整合処理スクリプトの登録
    91 マスタ登録 > 101 システム管理マスタ > 3002 統計帳票出力情報(月次)と選択,区分コード 004 と入力してリターン,確定し,以下のプログラムを登録する。
    帳票番号    004
    帳票名     診療会計テーブルのデータ整合 
    プログラム名  ORCBNOMIACCT 
    帳票パラメタ1 処理区分  PSN1  必須
    
    パラメタ説明
    0:対象の受診履歴のチェックリストを作成します。 1:データベースの更新を行います。
    
  14. 「52 月次統計」より1で登録したバッチ処理を処理区分 "0" で実行,プレビューする。
    ##受信履歴連番4以上更新変換リスト##
    「同日4回の受診はありませんでした」
    
    と出たので,このままで OK らしい。
  15. プラグインの登録
    プラグインの登録は,「03 プログラム更新」の F4 に移動になった。北海道の地方公費と sky.sh 帳票を「組込」する。いきなり地方公費が ERROR になってあせったが,再トライしたら ○ が付いて,無事組み込めたようだ。
OpenDolphin の方でも orca 4.8 に合わせて何行か変更した。

2015年3月17日 (火)

monsiaj を更新

ずっと monsiaj-20130418 をカスタマイズしたものを使っていたが,今年は 9月までに orca 4.8(monsiaj-20141010版以降の対応)へのアップデートもあるので,まずは monsiaj だけアップデートすることにした。ソースは bitbucket さんに上げた。
  • いつのまにか,monsiaj のソースは github からダウンロードするようになっていた。branch 1.4.9 の最終 commit 2015/3/4 のバージョンを Download ZIP でダウンロードして,以前と同じカスタマイズを加えた。
  • java 1.7 の時は ATOK との戦いに苦労したが,java 1.8 では何もしなくても大丈夫だった。
  • org.montsuqi.client.marshallers.PandaTableMarshaller
    (K02)診療行為入力画面で編集を行ってリターンキーを押すと,セルの選択が最後の行に飛んでしまうが,自分的には飛ばない方が良いと思うので,飛ばないようにした。
  • org.montsuqi.widgets.PandaCList
    テーブルに grid 表示する。
  • org.montsuqi.widgets.PandaFocusManager
    K03(請求確認) でショートカット処理を加えた。ctrl-0 で「領収書,明細書,処方発行無し」,ctrl-1 で「全て発行あり」,ctrl-2 で「処方だけ発行あり」に切り替える。
  • org.montsuqi.widgets.PandaTable
    (K02)診療行為入力画面の PandaTable の行数が常に 400行になっていて,データの後に大量の空白行がくっついた状態で表示されてしまうので,空白行は無視して,データがある行だけを表示するようにした。
  • org.montsuqi.widgets.Window
    (K10)診療行為入力-中途終了一覧などの Dialog が,表示の度に上に 21 ドットずつ移動してしまうのを修正した。
新しい monsiaj,何だかレスポンスが早くなったような感じがする。

2015年2月 5日 (木)

jma-receview が動かなくなった

レセプトチェックをしようと思って jma-receview を起動しようとしたら起動しなかった orz。そういえば,数日前にものすごく久しぶりに aptitude upgrade していたことを思い出した。jma-receview が update されて,当院の環境で動かなくなってしまったものと考えられた
jma-receview は ruby プログラムなので,以下のようにすると debug 情報が得られる。
$ ruby -d -w /usr/bin/jma-receview
Exception `NoMethodError' at /usr/lib/ruby/1.8/rational.rb:78 - undefined method `gcd' for Rational(1, 2):Rational
Exception `LoadError' at /usr/lib/ruby/vendor_ruby/1.8/glib2.rb:97 - no such file to load -- 1.8/glib2.so
Exception `LoadError' at /usr/lib/ruby/vendor_ruby/1.8/glib2.rb:220 - no such file to load -- gettext
Exception `LoadError' at /usr/lib/ruby/vendor_ruby/1.8/atk.rb:9 - no such file to load -- 1.8/atk.so
Exception `LoadError' at /usr/lib/ruby/vendor_ruby/1.8/cairo.rb:44 - no such file to load -- 1.8/cairo.so
Exception `LoadError' at /usr/lib/ruby/vendor_ruby/1.8/pango.rb:26 - no such file to load -- 1.8/pango.so
Exception `LoadError' at /usr/lib/ruby/vendor_ruby/1.8/gdk_pixbuf2.rb:9 - no such file to load -- 1.8/gdk_pixbuf2.so
Exception `LoadError' at /usr/lib/ruby/vendor_ruby/gtk2/base.rb:23 - no such file to load -- 1.8/gtk2.so
Exception `LoadError' at /usr/lib/ruby/1.8/jma/receview/gtk2_fix.rb:28 - no such file to load -- gtksourceview2
Exception `LoadError' at /usr/lib/ruby/1.8/jma/receview/gtk2_fix.rb:31 - no such file to load -- gtksourceview
Exception `RuntimeError' at /usr/lib/ruby/1.8/jma/receview/print.rb:10 -
Exception `LoadError' at /usr/lib/ruby/1.8/tmpdir.rb:14 - no such file to load -- Win32API
Exception `LoadError' at /usr/lib/ruby/vendor_ruby/1.8/poppler.rb:40 - no such file to load -- 1.8/poppler.so
Exception `LoadError' at /usr/lib/ruby/1.8/jma/receview/isoimage.rb:66 - no such file to load -- cdio
Exception `Errno::ENOENT' at /usr/lib/ruby/1.8/jma/receview/config.rb:335 - そのようなファイルやディレクトリはありません - receview.conf
Exception `NoMethodError' at /usr/lib/ruby/1.8/jma/receview/gui.rb:2941 - undefined method `+' for nil:NilClass
/usr/lib/ruby/1.8/jma/receview/gui.rb:2941:in `event': undefined method `+' for nil:NilClass (NoMethodError)
	from /usr/lib/ruby/1.8/jma/receview/gui.rb:2918:in `initialize'
	from /usr/lib/ruby/1.8/jma/receview/gui.rb:97:in `new'
	from /usr/lib/ruby/1.8/jma/receview/gui.rb:97:in `initialize'
	from /usr/bin/jma-receview:12291:in `new'
	from /usr/bin/jma-receview:12291
gui.rb の event で何かが nil になって止まっているらしい。puts を入れて調べてみたところ,@base.desktop_native と @base.doc_native が nil になっていた。
def event
 :
  else
    if Gtk::platform_support_os_linux(Gtk::GTK_SUPPORT_VERSION_AMD64)
      desktop = @base.desktop_native + @base.path_char
      @gtk_desk_button.signal_connect("clicked") do
        self.set_filename(desktop)
        self.dir_list.signal_emit("cursor-changed")
      end

      doc = @base.doc_native + @base.path_char
      @gtk_doc_button.signal_connect("clicked") do
        self.set_filename(doc)
        self.dir_list.signal_emit("cursor-changed")
      end
    end
  end
end
base.rb を読んでみると $HOME/.config/user-dirs.dirs ファイル内の XDG_DESKTOP_DIR, XDG_DOCUMENTS_DIR というプロパティーを読みに行っている。調べてみたら,これは xdg-user-dirs というシステムの仕組みらしい。いつの間にか,xdg-user-dirs の設定が必須になってしまっていたようだ。
当院の orca にデスクトップはインストールしていない(jma-receview は mac の x-window サーバで表示させている)ので,当然 xdg-user-dirs などというものも入っていない。
以下のように自分で ~/.config/user-dirs.dirs を作って無事動くようになった。
XDG_DESKTOP_DIR="$HOME"
XDG_DOCUMENTS_DIR="$HOME"

2013年11月 2日 (土)

java 1.7 に移行 - monsiaj 編

NetBeans 7.4 から,java 1.7 がインストールされていないと NetBeans がインストールできなくなってしまった。java 1.6 環境での開発ができなくなったという意味ではないのだが,どうせなのでこれを機会に java 1.7 に移行することにした。

 

mac での ATOK 対応

ATOK を ATOK8 の時代から使っているが,いつもトラブルの元になって苦しめられている気がする。今回も java 1.7 で monsiaj の最新版(monsiaj-20130418)を使ってみたところ,ATOK on でテキストフィールドにカーソルがある状態からファンクションキーを押すと,exception を出してフリーズするという問題が発生した。(java 6 では問題ない)

ATOK26[233]: Exception in proxy  -[IPMDServerClientWrapper selectedRange]
		name = NSPortTimeoutException
		reason = connection timeout: did not receive reply
		userInfo = (null)
	(
	0   CoreFoundation                      0x00007fff8a737b06 __exceptionPreprocess + 198
	1   libobjc.A.dylib                     0x00007fff863c43f0 objc_exception_throw + 43
	2   CoreFoundation                      0x00007fff8a7378dc +[NSException raise:format:] + 204
	3   Foundation                          0x00007fff85d68539 -[NSConnection sendInvocation:internal:] + 3209
	4   CoreFoundation                      0x00007fff8a726197 ___forwarding___ + 775
	5   CoreFoundation                      0x00007fff8a725e18 _CF_forwarding_prep_0 + 232
	6   InputMethodKit                      0x0000000100e26a99 -[IPMDServerClientWrapper selectedRange] + 207
	7   ATOK26                              0x00000001000b963d -[ATOKInputSessionWrapper selectedRangeWithClient:] + 77
	8   ATOK26                              0x00000001000aa994 -[ATOKIMController handleEvent:client:isInterruptedEvent:] + 476
	9   ATOK26                              0x00000001000aaac2 -[ATOKIMController handleEvent:client:] + 19
	10  InputMethodKit                      0x0000000100e31902 -[IMKServer handleEvent:characterIndex:edge:client:] + 2209
	11  CoreFoundation                      0x00007fff8a72b09c __invoking___ + 140
	12  CoreFoundation                      0x00007fff8a72af37 -[NSInvocation invoke] + 263
	13  CoreFoundation                      0x00007fff8a72b109 -[NSInvocation invokeWithTarget:] + 57
	14  CoreFoundation                      0x00007fff8a726197 ___forwarding___ + 775
	15  CoreFoundation                      0x00007fff8a725e18 _CF_forwarding_prep_0 + 232
	16  CoreFoundation                      0x00007fff8a72b09c __invoking___ + 140
	17  CoreFoundation                      0x00007fff8a72af37 -[NSInvocation invoke] + 263
	18  Foundation                          0x00007fff85d735f3 -[NSConnection dispatchInvocation:] + 331
	19  Foundation                          0x00007fff85d72651 -[NSConnection handleRequest:sequence:] + 1378
	20  Foundation                          0x00007fff85d6c7dd -[NSConnection handlePortCoder:] + 895
	21  Foundation                          0x00007fff85d6c00f -[NSConnection dispatchWithComponents:] + 53
	22  Foundation                          0x00007fff85d6bb15 __NSFireMachPort + 257
	23  CoreFoundation                      0x00007fff8a6a6e40 __CFMachPortPerform + 288
	24  CoreFoundation                      0x00007fff8a6a6d09 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 41
	25  CoreFoundation                      0x00007fff8a6a6a49 __CFRunLoopDoSource1 + 153
	26  CoreFoundation                      0x00007fff8a6d9c02 __CFRunLoopRun + 1826
	27  CoreFoundation                      0x00007fff8a6d90e2 CFRunLoopRunSpecific + 290
	28  HIToolbox                           0x00007fff89c3deb4 RunCurrentEventLoopInMode + 209
	29  HIToolbox                           0x00007fff89c3dc52 ReceiveNextEventCommon + 356
	30  HIToolbox                           0x00007fff89c3dae3 BlockUntilNextEventMatchingListInMode + 62
	31  AppKit                              0x00007fff88dac533 _DPSNextEvent + 685
	32  AppKit                              0x00007fff88dabdf2 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 128
	33  AppKit                              0x00007fff88da31a3 -[NSApplication run] + 517
	34  AppKit                              0x00007fff88d47bd6 NSApplicationMain + 869
	35  ATOK26                              0x00000001001002bc main + 913
	36  ATOK26                              0x00000001000017f4 start + 52
	)

ATOK on の状態だと,他の操作でもしばしば exception を出さずにフリーズしてしまい,実用にならない状態であった。いずれも ATOK を切って操作すればフリーズしない。しかたがないので,全ての Component で enableInputMethod(false) として,ATOK を切った。

WidgetBuilder.java

public static Component buildWidget(Interface xml, WidgetInfo info, Container parent) {
 :
  // ATOK causes freeze everywhere, so kill it unless necessary
  widget.enableInputMethods(false);
 :

しかし,これでは日本語入力ができない。そこで,「かな」キーを押すと,押した Component だけ enableInputMethod(true) になるようにした。

PandaFocusManager.java

public void processKeyEvent(Component focusedComponent, KeyEvent e) {
 :
  if (e.getKeyCode() == KeyEvent.VK_KATAKANA) {
    focusedComponent.enableInputMethods(true);
  }
  :

その他,AccelHandler.java,PandaTable.java にも ATOK を切るコードを入れた。この改造で,java 7 でも何とか1日フリーズなしで過ごせるようになった。こういう個人的な環境に合わせた改造ができるのは,オープンソースのよいところだと思う。

 

その他の改造

ついでに気になっていた部分をいくつか改造した。

  1. (K02)診療行為入力画面の PandaTable の行数が常に 400行になっていて,データの後に大量の空白行がくっついた状態で表示されてしまう。そこで,空白行は無視して,データがある行だけを表示するように改造した。

    PandaTable.java

    public void keyPressed(KeyEvent e) {
     :
      // 現在の selectedRow が実データの最終行なら,それ以上下へは移動しないようにする
      if (e.getKeyCode() != KeyEvent.VK_DOWN || getRealRowCount() != getSelectedRow()) {
          Component parent = ((Component) e.getSource()).getParent();
          KeyEvent pass = new KeyEvent(parent, e.getID(), e.getWhen(), e.getModifiers(), e.getKeyCode(), e.getKeyChar());
          parent.dispatchEvent(pass);
      }
     :
      public void changeSelection(int rowIndex, int columnIndex, boolean toggle, boolean extend) {
        // 空行への changeSelection は拒否る
        if (getRealRowCount() < rowIndex) { return; }
     :
     /**
      * pns サーバから帰ってくるデータの行数が,実データの有無にかかわらず常に400行なので,
      * 実データのある必要行数だけ表示するようにする
      * @return 
      */
     @Override
     public Dimension getPreferredSize() {
         Dimension size = super.getPreferredSize();
         
         int realRowCount = getRealRowCount();
    
         // 実データを表示するのに必要な高さ
         size.height = (realRowCount + 1) * getRowHeight();
         
         // 親が Viewport であれば,その高さよりも小さくならないようにする
         Object parent = getParent();
         if (parent != null && (parent instanceof JViewport)) {
             JViewport view = (JViewport) parent;
             if (size.height < view.getHeight()) {
                 size.height = view.getHeight(); 
             }
         }
         
         return size;
     }
     /**
      * pns 実データの行数を返す
      * @return 
      */
     private int getRealRowCount() {
         int realRowCount = 0;
         // 最終行からスキャンして,実データを見つけた時点で行数とする
         for (int r=getRowCount()-1; r>=0; r--) {
             // columm 1 に何か入っていれば実データである
             Object value = model.getValueAt(r, 1);
             if (value != null && !"".equals(((String)value).trim())) {
                 realRowCount = r + 1;
                 break;
             }
         }        
         return realRowCount;       
     }
    
  2. (K02)診療行為入力画面で,表示されたデータ行で編集を行ってリターンキーを押すと,セルの選択が最後の行に飛んでしまう。自分的には飛ばない方が良いと思うので,飛ばないように改造した。

    PandaTableMarshaller.java

    public synchronized void receive(WidgetValueManager manager, Component widget) throws IOException {
     :
      //pns 現在編集中の行を保存
      editingRow = table.getSelectedRow();
     :
      if (trow >= 0 && tcolumn >= 0) {      
          //pns 編集中の行があれば選択を変えない begins
          if (editingRow != -1) {
              // ただし最後の行の編集であれば,selectedRow を1つ下に送る
              if (trow == editingRow + 1) { trow = editingRow + 1; }
              else if (trow > editingRow) { trow = editingRow; }
          }
          //pns ends
    
  3. PandaPreview で表示倍率を選択できるようになっているが,初期値をシステムプロパティーから設定できるようにした。

    PandaPreview.java

    //pns zoom 初期値を system property から取得 begins
    //pns zoom = SCALE_FIT_PAGE_WIDTH;
    int index = 1;
    if (System.getProperty("monsia.pandapreview.initialzoom") != null) {
        try {
            int n = Integer.parseInt(System.getProperty("monsia.pandapreview.initialzoom"));
            if (n >= 0 && n <=9) {
                index = n;
            } else {
                if (n == 50) { index = 2; }
                else if (n ==  75) { index = 3; }
                else if (n == 100) { index = 4; }
                else if (n == 125) { index = 5; }
                else if (n == 150) { index = 6; }
                else if (n == 175) { index = 7; }
                else if (n == 200) { index = 8; }
                else if (n == 300) { index = 9; }
            }
        } catch (NumberFormatException e) {}
    }
    zoom = SCALE_VALUE[index];
    combo.setSelectedIndex(index);
    
  4. これまで CListMarsheller.java にグリッド表示コードを入れていたが,コードを見ていたところ,PandaCList.java に,グリッド表示をシステムプロパティーで制御しようとした痕跡を見つけた。そこで,グリッド表示コードをこちらに移した。monsia.panadaclist.showgrid=true などと値を設定するとグリッドが表示される。

    PandaCList.java

     :
    // if (System.getProperty("monsia.widget.pandaclist.showgrid") == null) {
    if (System.getProperty("monsia.pandaclist.showgrid") == null) {
        this.setShowGrid(false);
    } 
    //pns show grid
    else {
        this.setShowGrid(true);
        this.setGridColor(new java.awt.Color(235,235,235));            
    }
     :
    

改造したコードは bitbucket さんに上げた。

2013年9月20日 (金)

precise に orca をインストール

dom-U 上の ubuntu 12.04 precise に orca をインストールした。これで当院の orca もついに最新版に追いついた。これで当院のサーバ os は全て precise に統一されることになった。
  1. uuid-runtime のインストール
    コマンドラインで uuidgen を入力して「コマンドが見つかりません」となる場合はインストールする必要がある。precise では既にインストールされていた。
    # aptitude install uuid-runtime
    
  2. keyring の追加
    # wget -q http://ftp.orca.med.or.jp/pub/ubuntu/archive.key
    # apt-key add archive.key
    
  3. apt-line の追加
    deb     http://ftp.orca.med.or.jp/pub/ubuntu precise4.7 jma
    deb-src http://ftp.orca.med.or.jp/pub/ubuntu precise4.7 jma
    deb     http://ftp.orca.med.or.jp/pub/ubuntu precise-common jma
    deb-src http://ftp.orca.med.or.jp/pub/ubuntu precise-common jma
    
  4. パッケージ更新
    # aptitude update
    # aptitude upgrade
    
  5. orca インストール
    $ sudo aptitude install -y jma-receipt
     :
    $ sudo dpkg-reconfigure -p critical jma-receipt
     :
    Copying scripts files...done
    Copying lddef files...done
    Copying data files...done
    Copying etc files...done
    gpg: 鍵ED7FC485:“support (plugin) ”変更なし
    gpg: 処理数の合計: 1
    gpg:              変更なし: 1
    
    ****************************************************
    *                                                  *
    * Don't execute database schema change processing. *
    *                                                  *
    * Execute jma-setup manually.                      *
    * $ sudo jma-setup                                 *
    *                                                  *
    * Cancel {start} jma-receipt daemon.               *
    *                                                  *
    ****************************************************
    
    $ sudo jma-setup
    /usr/lib/jma-receipt/init/orca-db-create.sh ......
    CREATEDB (orca)
    /usr/lib/jma-receipt/init/orca-db-init.sh .....
    /usr/lib/jma-receipt/init/orca_dbkanri_orig.dump done.
    /usr/lib/jma-receipt/init/orca-db-install.sh .....
    ONLINE: センタからのDBレコード管理情報のダウンロードが終了しました
    更新用ダウンロードファイルの作成が終了しました
    dump/ORCADBS/ORCADBS-20120912-1.tar.gz
    dump/ORCADBS/ORCADBS-20120912-1.tar.gz ダウンロードが終了しました
     :
     :
    Very Good!
    データベース構造変更処理は終了しました
    
  6. user,password の追加
    # gluseradd -file /etc/jma-receipt/passwd -p passwd1 ormaster
    # gluseradd -file /etc/jma-receipt/passwd -p passwd2 doctor
    # gluseradd -file /etc/jma-receipt/passwd -p passwd3 jimu
     :
    

プリンタインストール

  1. 上記のインストールでは,cups のサーバーはインストールされない。当院では brother の非ポストスクリプトプリンタを使用しているので,cups サーバをインストールして,印刷できるように設定する。
    $ sudo aptitude install cups
    
    cupsd.conf の設定
    $ cat /etc/cups/cupsd.conf
    #
    # Sample configuration file for the CUPS scheduler.  See "man cupsd.conf" for a
    # complete description of this file.
     :
    Listen orca:631    # orca のホストアドレス
     :
    # Restrict access to the server...
    <Location />
      Order allow,deny
      Allow @Local
     </Location>
    
    # Restrict access to the admin pages...
    <Location /admin>
      Order allow,deny
      Allow @Local
    </Location>
    
    # Restrict access to configuration files...
    <Location /admin/conf>
      AuthType Default
      Require user @SYSTEM
      Order allow,deny
      Allow @Local
    </Location>
     :
    MaxJobs 0
    
  2. cupsd をリロードして,ブラウザから https://orca:631/admin にアクセス
    $ sudo service cups restart
    
  3. 「プリンターの追加」をクリック
  4. 認証は管理者 ID とパスワードを入力。自動発見されたプリンタが出てくるが,無視して手動で設定する。「その他のネットワークプリンタ」から選択(どれでもよい),次の画面でプリンタのアドレスを「socket://192.168.1.xxx」と入力する。プリンタの名前は ORCA の設定に合わせて登録(lp1,lp2 等)。メーカーは Brother,リストから「Brother HL-5250DN Foomatic/pxlmono」を選択(増田先生の twitter でこれで印刷できることを教えてもらった),「プリンタの追加」をクリックしてプリンタを登録。

postgres の設定

  1. /etc/postgresql/9.1/main/postgresql.conf
    listen_address = '*'
    
  2. /etc/postgresql/9.1/main/pg_hba.conf
    host  all  all 192.168.1.0/24  trust
    
  3. postgres の再起動と jma-receipt の起動
    $ sudo service postgresql restart
    $ sudo service jma-receipt start
    
  4. glclient でアクセスして,プログラム更新→マスタ更新

データベース移行

  1. lucid で pg_dump
    $ pg_dump -Fc -f orca_db.dump
    
  2. precise で pg_restore。この時,createdb にオプションが必要。
    $ sudo service jma-receipt stop
    $ dropdb orca
    $ createdb -lC -Ttemplate0 -EEUC-JP orca
    $ pg_restore -d orca orca_db.dump
    
  3. プログラム更新→マスタ更新
  4. スキーマチェックスクリプト
    $ wget http://ftp.orca.med.or.jp/pub/etc/jma-receipt-dbscmchk.tgz
    $ tar xvzf jma-receipt-dbscmchk.tgz
    $ cd jma-receipt-dbscmchk
    $ sudo bash jma-receipt-dbscmchk.sh
    現在のスキーマバージョンは4.7.0です。
    スキーマの整合性をチェックします。
    --------------------------------------------------------
      データベースの整合性チェックは正常に終了しました。
    --------------------------------------------------------
    

帳票のインストール

  1. 帳票,地方公費はプラグインからインストールできるようになった。「取込」をしてから「組込」することで使えるようになる。とても簡単になった。
  2. sky.sh 様のカスタマイズ帳票
    $ sudo bash chohyo_install.sh
    
  3. sky.sh 様のカスタマイズ帳票がプラグイン対応になった
    1. 帳票のアンインストール
      $ wget http://www.sky.sh/orca/plugin/uninstall_skysh.tar.gz
      $ tar zxvf uninstall_skysh.tar.gz
      $ cd uninstall_skysh/
      $ sudo perl uninstall_skysh.pl
      
    2. 公開鍵のインポート
      $ wget http://www.sky.sh/orca/plugin/skysh.pub
      $ gpg --import skysh.pub
      
    3. パッケージリスト追加
      $ cat /etc/jma-receipt/jppinfo.list
      ---
      :root: /var/lib/jma-receipt/plugin
      :list:
       - http://ftp.orca.med.or.jp/pub/receipt/plugin/4.7.0/jpplist1.yml
       - http://ftp.orca.med.or.jp/pub/receipt/plugin/4.7.0/jpplist2.yml
       - http://www.sky.sh/orca/plugin/4.7.0/skysh.yml
      :linkprefix: /usr/local/site-jma-receipt
      :verify: true
      
    4. プラグインから組込

その他

  • claim server の起動設定
    $ dpkg-reconfigure jma-receipt
    
  • jma-receview のインストール