トップ > 日医標準レセプトソフト > 運用のための各種設定 > 拡張漢字(JISX0213:2004) > データベース文字エンコーディング変換

データベース文字エンコーディング変換

日医標準レセプトソフトではデータベースの文字エンコーディングが、「EUC-JP」と「UTF-8」の2つをサポートしています。

「EUC-JP」では(日医標準レセプトソフトの場合)はJISX0208:1983の範囲の文字しか使用できませんが、「UTF-8」を使用するとJISX0213:2004の範囲まで使用出来るようになります(氏名部分のみ使用可能)。

メニュー

はじめに

4.7.0からは 「DBENCODING」によりデータベースのエンコーディングを設定するようになっています。
これは 「/etc/jma-receipt/jma-receipt.env」によりデフォルトでは「EUC-JP」に設定されています。「/etc/jma-receipt/db.conf」というファイルが存在した場合はそちらの設定が優先されます。
 

初期データベースのセットアップ

UTF-8を選択する場合は 「/etc/jma-receipt/db.conf」というファイルを作成します。
エディタを起動し /etc/jma-receipt/db.confを指定します。
$ sudo gedit /etc/jma-receipt/db.conf

以下の内容を記述します。

DBENCODING="UTF-8" 
EUC-JPの場合は設定せずにそのままにしておきます。
 
日医標準レセプトソフトが停止していることを確認してjma-setupを実行してください。もし動作している場合はデータベースの変換を参照してください。
$ sudo jma-setup 

正常に終了していればjma-receiptを起動します。

$ sudo service jma-receipt start 

データベースの変換

 /usr/lib/jma-receipt/bin/jma-dbconvert.sh は DBENCODINGの値にデータベースのエンコーディングを変換します(内部的には convu8.rbを呼び出すことで変換をかけています。


Ver.4.7.0 Ubuntu 12.04環境の問題 (2013/1/15追記)

Ver.4.7.0 jma-dbconvert.shに問題があり、Ubuntu 12.04では、そのまま実行すると以下のエラーが出ます。

ERROR:  must be owner of extension plpgsql

 このエラーはplpgsqlの拡張モジュールに付けるコメントを設定しようとして権限がないためエラーとなるものです。コメントは例えばpsqlでログインした場合に"¥dx"と打つと表示されます(Description部分)。

$ sudo -u orca psql
orca=# ¥dx
                   List of installed extensions
    Name   | Version |   Schema   |         Description
  ---------+---------+------------+------------------------------
   plpgsql | 1.0     | pg_catalog | PL/pgSQL procedural language
  (1 row)

このコメント設定は実行出来なくても問題ないものですが、エラーチェックに引っかかってしまうため、以下のコマンドを実行してコメントを削除してください。
$ sudo -u postgres psql orca -c "COMMENT ON EXTENSION plpgsql IS NULL;"

コメントが削除されたことを確認します。

$ sudo -u orca psql
orca=# ¥dx
                   List of installed extensions
    Name   | Version |   Schema   | Description
  ---------+---------+------------+------------
   plpgsql | 1.0     | pg_catalog |
  (1 row)

この状態で以下のjma-dbconvert.shを実行してください。

jma-dbconvert.sh はデータベースを再作成するため、変換後のデータベースではplpgsqlのコメントも元通り表示されるようになります。


DBENCODINGの設定

DBENCODINGを「変換したいエンコーディング」に設定します。

DBENCODING="UTF-8"

jma-receipt を停止します。 他にorcaデータベースに接続しているアプリケーションがあったら終了します。PostgreSQLは動作させたままにします。

$ sudo service jma-receipt stop   

ログを保管しているテーブルでは変換でエラーとなりやすいので事前に削除します。
ログ自体はファイルで保存されていますので、別の方法で参照可能です。

$ sudo -u orca psql orca -c "delete from monbatch_clog ;"   

 データベース変換スクリプトの取得

以下の手順でデータベース変換スクリプトの取得および展開を行います。

$ wget https://ftp.orca.med.or.jp/pub/receipt/ubuntu/misc/jma-dbconvert-20200417.tar.gz
$ tar zxvf jma-dbconvert-20200417.tar.gz
$ cd jma-dbconvert-20200417/

 データベースの変換チェック

jma-dbconvert.shを 「-t」つきで実行すると変換のチェックが出来ます。

$ sudo -u orca ./jma-dbconvert.sh -t
データベース [orca]
エンコーディング [EUC_JP]
ロケール [C] [C]

OK: 拡張漢字無効

データベースに不正な文字が入っていないかチェックします...

OK: 不正な文字はありませんでした

最後にOKと出た場合は変換可能です。

不正な場合は以下のように表示されます。

ERROR: データベースに不正な文字がありました
ERROR: /tmp/jma-receipt_db_check.log を参照して修正する必要があります

この場合はメッセージに従い修正をおこなう必要があります。

/tmp/jma-receipt_db_check.log には不正な文字が入っていたテーブルが記録されています。不正な文字の「前」に「〓」という文字が挿入されています。この文字の直後の文字が不正だった文字です。

データベースの変換の実行

不正な文字がない状態になったらjma-dbconvert.shを実行します。

$ sudo -u orca ./jma-dbconvert.sh 

正常に終了すれば変換終了です。 jma-receiptを起動します。

$ sudo service jma-receipt start 
トップ > 日医標準レセプトソフト > 運用のための各種設定 > 拡張漢字(JISX0213:2004) > データベース文字エンコーディング変換

このページのトップへ