[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[orca-users:02946] 報告:東芝レセコンからのデータ移行



三原@山形県鶴岡市です。

長文注意です。データ移行は業者のやることと割り切っている方、興味のない方
はスキップして下さい

4月からの運用を目指しています。
東芝レセコンからORCAへのデータ移行(23000件)に成功しましたので報告しま
す。すでに、移行に成功している方も多いかと思いますが、これからの移行を考
えている方の参考になれば幸いです。
 #必ずも業者さんに依頼しなくとも、できるかもしれません。
 #依頼すると15〜30万とか聞きます。

既存のレセコンデータをORCAへ移行する際のポイントは、レセコンから落とした
データをORCA用のフォーマットにどのようにして整形するかだと思います。私の
行った手順を示します。必ずしもスマートな方法ではありませんが・・。

なお、データ移行は患者情報、保険情報です。
ここでは患者情報の移行のみを記載します。

■ レセコンからのデータの抽出
 患者番号、患者名(カナ)、患者名、性別、生年月日をFDへ落とします。
 FD1枚に15000件程度は入るようですので、それ以上の場合は分割
 windowsで動いている東芝レセコンの場合、メニューから簡単に操作できます。
 抽出データは以下のようになっているはずです。
 先頭行   "患者番号","カナ氏名","漢字氏名","性別","生年月日"
 次行以降 "         2","フジ*ラ ア*ミ","藤 あ*み",2,1973/09/13

■ このデータをORCAに読み込ませるには以下の問題を解決する必要があります。
  ○半角カナを全角カナへ変換する
  ○生年月日を8桁の半角数字へ変換する
  ○ORCAフォーマットでは、47番目にテスト患者フラグがあり、ここに0をセッ
   トする必要がある
  ○フィールド数を49に設定する

■ 秀丸を利用した半角から全角カナへの変換
 後で出てきますが、perlで全角カナへの変換関数があれば簡単なのですが、そ
 の方法が分からなかったので、秀丸というエディターのカナ全角変換機能を使
 いました。
 秀丸については以下を参照下さい。
 http://hidemaru.xaxon.co.jp/software/hidemaru.html
  シェアーウエアですが、無料でも使えます。
 <秀丸での手順>
 レセコンから落としたファイルを秀丸に読み込む。
 全選択してから、変換→全角カナへを実行。
 この際、半角カナのみならず、すべてが全角に変換されてしまうので、
 データ区切りの全角カンマを半角カンマへ、
 全角のダブルクオート(“)を半角クオートへ「置換」で戻します。
 (やや面倒で、ばかばかしい操作ですが、しょうがないのかな・・)
 数字も全角になっていますが、ここでは無視します。
 このファイルを拡張子にCSVをつけて保存します。

■ エクセルでの整形
 上記のファイルをエクセルで読み込みます。これで全角数字は半角数字に自動
 的に変換されます。フィールド名である先頭行を削除してから、CSV形式で保
 存します。ファイル名を例えばptinf.csv とします。
 1,フ*マ* タツ*,藤* 達*,1,1992/6/12
 となっているはずです。

ここまででWindowsでの操作は終了。

以上で作成したファイルをFDへ落として、以降はDebianでの操作になります。

FDから/var/tmp へファイルをコピーします。
 (以下の操作はrootで)
このファイルはまだsjisですから、eucへ変換します。
 nkf -e ptinf.csv>ptinfeuc.csv

さて、次の問題は生年月日を8桁の半角数字への変換とフィールド47へ0をセッ
トすることです。以上解決のためにPerlで簡単なスクリプトを書いてみました。

■perlでのORCAフォーマットへの整形
 以下perlのスクリプトです。cvptinf.plなどとしてviなどで書き、/var/tmpに
 保存します。
   //から始まるのはコメント行
------------------------------------------------------
//読み込むファイルを指定する
open (IN,"ptinfeuc.csv");
//書き出すファイル名を指定する。
open (OUT,">ptinf.out");
//1桁の場合、2桁にするための処理をする配列を準備します
@array = ("01","02","03","04","05","06","07","08","09","10","11","12");
//一行づつ読み込んで処理を開始します。
while (<IN>){
 @line = split(/,/); // 1行のデータをフィールド毎に分割し、@lineという配列に入れます。
//ORCAでは4番目のフィールド($line[3])が通称という項目になっていますの
で、以下は空白の項目を入れるための処理です。
 (エクセルで空白列を4番目に入れておけば必要ありません))

 $line[5] = $line[4];
 $line[4] = $line[3];
 $line[3] = "";
//生年月日フィールドを、年、月、日に分割します。
$line[5] =~ (/([0-9]+)\/([0-9]+)\/([0-9]+)/);
//年を抽出します。 
$year = $1;
 //月を抽出します。1桁の場合は前に設定した配列を利用して1なら01という
処理をします。
$month = @array[$2-1];
//日にちを抽出します。
$day = $3;
//1桁なら配列を利用して2桁とします。
 if ($3 <10){
  $day=$array[$3-1];
 }
//以上を繋げて新しい8桁の生年月日を生成します。
$line[5] = "$year"."$month"."$day";
 //47番目のフィールドに0をセットします。
$line[46] = 0;
//フィールド数を49にセットします。
 $line[48] = "";
//以上で@lineがORCA用のデータに変換されましたので、カンマで繋げます。
$newline = join(",",@line);
//最初に設定したファイル名で書き出します。\nは改行コードです。
print OUT"$newline\n";
}
close(IN);
close(OUT);
------------------------------------------------------
このファイルを perl cvptinf.pl として実行します。
すると、変換されたファイル(この場合はptinf.out)が作成されます。

以上でORCAへ移行できるデータに整形できました。

■次は、変換用パラメータフィル(ORCADC.PARA)の編集
 @01−1:ファイル名を上で出力したファイル名とする。
 @03−1:YES
 @03−3:日レセのシステム管理マスタの患者構成番号設定に患者ID(ptid)
  の上限を確認ができますので、その値を設定。10桁で設定します。
  何もデータが入っていない状態では必要ありませんが、すでにデータある場
  合や、データを何度かに分けて追加登録する場合には必須です。
  #私はここではまりました。
 @04−1:自動採番機能を使う場合には、ここにカルテ番号の最大値を設定
  する。自動採番(*の入力でカルテ番号最大値+1を自動的に採番してくれ
  る機能)を利用する場合には、「現在、日レセでは、患者番号構成情報を変
  更しますと、入力してあった患者が呼び出せなくなるなどの動作が保証でき
  ない状態になっております。」とのサポートセンターからの回答がありまし
  たので移行前に、システム管理マスタの、患者番号構成を標準にしておいて
  た方が良いかと思われます。

これで、移行の準備が全て整いました。

■ORCAユーザとなりホームディレクトリー上で、
  ./orcvt_go_woody.sh ORCVTPTINF
 を実行します。

2万件を登録するには、2−3時間はかかると思われます。