今回のjma-receipt 4.2.0へのアップデートなどで、データベーススキーマチェックについて話題になることが多かったので、調査した際のメモ。どちらにしても、データベースのバックアップは必ず定期的に取っておきましょう(特にアップデート作業前後)。壊れたものは元には戻せませんので。
□□□ ORCAのデータベーススキーマについてのメモ □ データベーススキーマとは何か? =>一言で言ってしまえば、データベース(DB)の構造のこと。 詳細は、Wikipedia - スキーマ (データベース)を参照。 □ ORCAアップデートの際にデータベーススキーマはどうなってる? =>ORCA(日レセ)では、バージョンアップの際にデータベーススキーマ構造が変更になる ケースが多い。 このため、DBのバックアップ(ダンプ)ファイルのバージョンと 日レセシステムのバージョンが異なる場合は、基本的に"そのまま"利用することはできない。 そういった場合には、DBのリストアを行った後でデータベーススキーマ構造を 更新し、日レセシステムのバージョンに合わせる必要がある。 スキーマ更新を行う場合は、更新の際に利用するスキーマ定義ファイルを取得するために インターネットに接続した状態で、データベース構造変更処理スクリプトを ------------------------------------------------------ # sh /usr/lib/jma-receipt/bin/jma-receipt-db-setup.sh ------------------------------------------------------ のように実行して「y」を選択するか、または、jma-receiptパッケージの再設定を ------------------------------------------------------ # dpkg-reconfigure jma-receipt ------------------------------------------------------ のように実行し、「データベース構造変更処理を自動で実行しますか?」の質問で 「はい」を選択し、データベーススキーマ構造を、現在インストールされている 日レセにあったバージョンに変更する必要がある。 なお、後者の方は前者のスクリプトを含んで実行しているだけなので 実行される内容は同じ。 □ データベーススキーマチェックについて データベーススキーマチェックは、上記のデータベーススキーマ構造に 異常がないかチェックするためのスクリプト。 テーブル/ビュー/インデックスのカラムや、サイズなどの属性について チェックするが、チェックできるのはあくまで一部のスキーマ構造のみ であり、データなどは含まれない。 例えば、構造変更処理が行われないために氏名のカラムがないとか サイズが20バイトのままになっているようなケースはエラーとして 検出できても、氏名のデータが破損して「あああああ」になってしまった ような場合は検出できない。 スキーマチェックのためのスクリプトは、下記サイトで提供されている。 http://www.orca.med.or.jp/receipt/tec/schema-check-tool.rhtml チェックする際は 古いバージョンのスクリプトは削除し、必ず最新版を取得して実行すること。 最新のjma-receiptをチェックするには、最新のデータを含んだスクリプトが必要なため。 □ スキーマチェックスクリプトの詳細 ファイルを展開してみると分かるが、シェルスクリプトとデータベース スキーマ定義ファイルで構成されている。シェルスクリプトは、DBの 内容に合わせたスキーマ定義ファイルを読み込み、チェックする。 ------------------------ $ ls -1 jma-receipt-dbscmchk.sh orcadbschema.ver330 orcadbschema.ver340 orcadbschema.ver400 orcadbschema.ver410 orcadbschema.ver420 ------------------------ 下記は、2008/4/3時点でのスキーマチェックスクリプトについて述べたもの * jma-receiptのインストールチェック /etc/jma-receipt/jma-receipt.envがなければ、jma-receiptがインストールされて いないものとして、何もメッセージを出さずに終了する。 * orcaユーザ権限で実行しているかチェック 必ずorcaユーザ権限で実行すること。 正しい権限で実行しないと「orcaユーザーで実行してください。」と表示される。 * データベース管理バージョンの取得 どのORCAバージョン向けのデータベース内容なのかチェックする。 2008/4/3時点で、jma-receiptバージョン3.3〜4.2に対応したデータを取得し 以下のようなメッセージを出す。 正しく取得できた場合は、「現在のスキーマバージョンはX.X.Xです。」 取得できなかった場合は、「データベーススキーマのバージョンが正しくありません。」 なお、バージョンが正しくない旨のメッセージが出た場合、 まずは、最新版のスキーマチェックスクリプトをダウンロードして実行して いるのか確認のこと。 また、PostgreSQLがちゃんと起動しているかどうか、orcaデータベースが あるかどうかといった、基本的な項目についても確認してみるとよい。 下記のようなエラーが出る場合は、orcaデータベースが存在していない。 ORCAの再インストールを行う。 --------------------------------------------------------------------------------- psql: FATAL: database "orca" does not exist --------------------------------------------------------------------------------- 下記のようなエラーが出る場合は、PostgreSQLデータベースサーバそのものが動作していないか pg_hba.confによるアクセス許可が適切に設定されていない。 下記の場合のエラーメッセージの内容は、"ローカルでサーバーが動いていて Unixドメインソケットでの接続を許可している?"という内容なので、確認すること。 --------------------------------------------------------------------------------- psql: could not connect to server: そのようなファイルやディレクトリはありません Is the server running locally and accepting connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"? --------------------------------------------------------------------------------- 上記の問題がない場合、orcaユーザ権限で下記のコマンドのように データベース構造バージョンが取得できるか試してみる。 --------------------------------------------------------------------------------- $ psql orca -c "select version from tbl_dbkanri where kanricd = 'ORCADB00' ;" version ---------- 040200-1 (1 row) --------------------------------------------------------------------------------- * スキーマのチェック スキーマ構造のチェックを行い、スキーマ定義ファイルの内容と異なる カラム等が発見された場合に、以下のメッセージを出す。 「(スキーマ名) が不整合です。」 「(スキーマ名) が存在しません。」 * hospidのチェック jma-receipt 3.3または3.4の場合、hospidが重複していないかチェック を行う。これらのバージョンでは、hospidは1つのみであるため、hospidが複数発見された 場合は、以下のエラーメッセージを出す。 「(テーブル名) のhospidが一意ではありません。」 * データベースの整合性チェックの結果表示 上記のスキーマチェックかつhospidのチェックの両方が、正常だったか どうかについて以下のメッセージを出す。 正常だった場合は、「データベースの整合性チェックは正常に終了しました。」 エラーがあった場合は、「データベースの整合性に誤りがあります。 詳細はjma-receipt-dbscmchk.logを参照ください。」 * チェックマスタのチェック チェックマスタのバージョンが、"R-020800-2-20070420-2"より 古いかどうかチェックし(2008/4/3時点)、以下のメッセージを出す。 チェックマスタが新しい場合は、「チェックマスタは問題ありませんでした。」 チェックマスタが古い場合は、「チェックマスタの更新状態が古いものがあります。」 □ データベースに記録されている管理情報 日レセでは、データベース管理情報(スキーマバージョン)やマスタ管理情報は orcaデータベース内に格納されている。データベース構造変更処理や マスタ更新などを行うたびに、データベース内の管理情報も更新されている。 マスタの不整合を起こす可能性があるので、このテーブルは手で不用意に触ってはいけない。 管理情報は、主に以下のテーブルに保存されており、glclientの「92 マスタ更新」にて 表示されている内容と同じである。 ------------------------------ tbl_dbkanri :データベース管理情報 tbl_mstkanri :マスタ管理テーブル ------------------------------ * tbl_dbkanri :データベース管理情報 select * from tbl_dbkanri; kanricd | version | dbsversion1 | dbsversion2 | termid | opid | creymd | upymd | uphms ----------+----------+-----------------------+-----------------------+--------+------+----------+----------+-------- ORCADB00 | 040200-1 | S-040200-1-20080318-2 | S-040200-1-20080318-2 | | | 20050710 | 20080318 | 000000 (1 row) versionが「040200-1」となっており、バージョン4.2.0向けのデータベース構造に なっているのが分かる。 * tbl_mstkanri :マスタ管理テーブル select * from tbl_mstkanri ; hospnum | kanricd | dbrversion1 | dbrversion2 | termid | opid | creymd | upymd | uphms ---------+----------+-----------------------+-----------------------+--------+------+----------+----------+-------- 1 | ORCADB07 | R-020200-3-20060217-3 | R-020200-3-20060217-3 | | | | | 1 | ORCADB08 | R-020200-3-20060217-4 | R-020200-3-20060217-4 | | | | | 1 | ORCADB09 | R-020200-3-20041025-1 | R-020200-3-20041025-1 | | | | | : (17 rows) テーブル構造に関する詳細は、開発者向け情報の「日医標準レセプトソフトデーターベース仕様書」を参照のこと。
未だに根強く現場で使われているVB6ですが、延長サポートフェーズは予定どおり2008/4/8で終了。ただし、開発環境のサポートが停止するのであって、VB6アプリがVistaなどのOS環境で動かなくなる、ということではないようです。
Microsoft - Visual Basic 6.0 ファミリ製品のライフ サイクル ガイドライン http://www.microsoft.com/japan/msdn/vbasic/support/vb6.aspx Microsoft - Windows Vista と Windows Server 2008 における Visual Basic 6.0 のサポートについて http://www.microsoft.com/japan/msdn/vbasic/support/vistasupport.aspx @IT - VB6アプリをVistaで動かすための基礎知識 (前編) http://www.atmarkit.co.jp/fdotnet/vblab/vb6onvista_01/vb6onvista_01_01.html @IT - VB6アプリをVistaで動かすための基礎知識 (後編) http://www.atmarkit.co.jp/fdotnet/vblab/vb6onvista_02/vb6onvista_02_01.html