データベース文字エンコーディング変換
日医標準レセプトソフトではデータベースの文字エンコーディングが、「EUC-JP」と「UTF-8」の2つをサポートしています。
「EUC-JP」では(日医標準レセプトソフトの場合)はJISX0208:1983の範囲の文字しか使用できませんが、「UTF-8」を使用するとJISX0213:2004の範囲まで使用出来るようになります(氏名部分のみ使用可能)。
メニュー
はじめに
$ sudo gedit /etc/jma-receipt/db.conf
以下の内容を記述します。
DBENCODING="UTF-8"
$ 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