友人が電子カルテダイナミクスを使うようになりましたので、他社製レセコンデータの変換をしに出かけてきました。
他社製レセコンからは色々な方法でデータ抽出が出来ます。今回は、患者へのダイレクトメールを出すような機能などからつついて抽出しています。
まず<患者マスター>テーブルに、
ID+枝番号(0-9)を割り振り「カルテ番号」とします。そして、これが重複のないようにデータのチェックを行います。すべてのレセコンにIDの重複がないとは限りません。今回は一種の、「前のレセコンのバグ取り作業」に一番時間がかかりました。
患者氏名は全角の漢字、フリガナは半角のカタカナにします。Strconv関数を使わねばならない場合もあります。
次に生年月日は、DateSerial関数を使って文字列をまず日時に変換する必要がある場合があります。
ダイナミクスでは、Format([Date], "ggg")で年号を、以下、"e"、"m"、"d"の各パラメーターを用いて変換します。
住所は分割せねばならない場合があります。数字があるかどうかを調べて、それ以後を切り取る関数を作りましたが、それは採用をやめました。郵便番号から逆引きして先頭一致で住所1を抽出、それ以下を住所2としました。
データの変換においては、空白データが出現してきますが、それらはNullにしておかねばなりません。""という長さ0の文字列と、NullとはACCESSでは区別され、””という文字列はデータベース上で許可せねばエラーが起きます。
ダイナミクスでは長さ0の文字列を多くの場合許可していませんから、空白データの部分にはNullを代入する工夫が必要です。
次に<患者保険マスター>です。
これは保険者番号は8桁とするのがコツで、Format([String], "@@@@@@@@")という書式で表現します。記号・番号は多くの場合そのままで大丈夫です。
本人・家族および国保・社保あるいは、高齢者1割、3割でそれぞれ0,2,6,8などと区分していく部分は保険の知識が必須でしょう。
これがわからない人は業者さんに頼むのが無難です。
第一公費、第二公費、保険での負担割合、公費を含めた負担割合を入力するクエリを工夫しつつ作ります。パズルです。
最後に<患者包括マスター>です。
これは上記2つと整合性をとるために取り敢えずはIDをきちんと入れるクエリを作ります。
すべてを「追加」クエリで書き込み、そして「おそうじ」機能でエラーチェックを行いましょう。
エラーが出なくなるまで手修正を行って終了です。
今回の作業時間は構想に何日か、実働3時間程度でした。
病名の移行を行います。
病名の場合、平成を"4"に変換する事、継続、中止、治癒などを上手く割り振る工夫をして、カルテ番号に紐付けをして追加クエリで書き込みます。
次に、病名と病名コードのリレーションを組んで、病名コードを書き込みます。足りない病名コードを補いつつ、大体8割ぐらいがコード化出来るようにしましょう。
以上で病名は完了です。実働1時間程度でした。
もとの病名を∑ボタンを利用したクエリを用い、Countで並べかえを行うと頻出病名がわかり便利です。
最後にDo処方が出来るように準備出来れば完璧です。
ここはまだ実装できていませんので次の機会に。