オンライン資格確認Phase01

顔認証機能付きカードリーダから得られたXMLファイルをカルテやORCAに登録して行く方法は非常に複雑で、申し訳ないですがここでは開示出来ないです。 その代わりにその簡易版となる、共有ボリューム reqとresを介した資格確認用のスクリプトを少し紹介しておきます。 このスクリプトはいくつかのサブプロセスがありますが、サブプロセスは開示出来ないので大事な部分の触りだけ開示しておきます。 おそらくここに書かれている情報の応用で顔認証機能付きカードリーダからのデーターのORCAへの落とし込みは可能となると思います。

このスクリプトは4つのパートに分かれています。 先ずは、1)Request XMLに記載するための情報を集める。  2) ディスクをマウントする。 3)reqディスクにXMLデーターを書き込む。 4) resディスクにデーターが戻ってくるのをまって、データーを読み込み解析して指示を出す。


じゃあ先ず Phase 1から見ていきましょう。


OnshinシングルPh01

main(q)ハンドラーの定義部分を1行目呼ぶことにしましょう。 2行目はデフォルト値の定義ですね。 本来入力値は空白の{}でよいのですが、将来的にフォルダの名前が変わったりした場合の対応としてこのように設定してます。 左のレコードを優先しますので、明示的な定義があればそちらが優先されます。

別ファイルに記載されたサブスクリプトをローカルでコールする



その下の4行分は以下で使うスクリプトのサブスクリプトをコールしてます。 これはmainを呼び出すたびにしたの4つのファイルにアクセスするのでプログラムの動作時間が少し長くなるので、速度重視される方はグローバル変数としてmain関数の外側で定義される方も多いでしょうね。 例えば
property orca_API : load script (((path to home folder from user domain) as string) & "xxxx:orca_api_s.scpt") as alias
といったグローバル変数にサブスクリプトを格納して、これをスクリプト内で利用する。 サブスクリプトのロードがコンパイルしてセーブするときに出来るのでロードの時間が短くなって良い様に見えるのですが、私の経験だと下位のファイルを全て取り込んでファイルサイズが肥大してゆきます。 私の経験から言うと.SCPTファイルは1MBを越えると何故かセーブ保存出来なくなる様です。 なのでファイルサイズを大きくしないため、最近は関数内でローカルに定義する様にしています。
今回完全なパスは当院でのセキュリティー問題となるのでxxxxにしてます。 今回使う関数は 
• 全角と半角の変換のためのconvert_kana、
• 今までORCAの電子カルテで使っていたプロセス、orca_API_main これは保険情報をファイルメーカーORCAから取り込むためのバックアップで必須ではありません。 
• ORCA_elementはファイルメーカからORCA/MaClientのウインドウの操作をするための物で、対象の患者が見つかったらMaClientのWindowで対象の患者を開くという物になります。これもまあ必須では無いですが、手動でオルカ画面を開くより圧倒的に時間短縮になります。
今回このサブスクリプトは開示はしませんが、無くても動作するので不要ならばカットして下さい。

視認しやすい様にLog で区切ってます



長いスクリプトになると、セクション毎に機能をまとめて、バグがあったときに見つけやすい様にします。 アップルスクリプトはコメント行は(#, --, (* 文章 *) といったプログラムとは関係の無い説明を残しておく機能)、エディター上でデフォルトだとグレー表示されてしまうので目視が難しくなります。 その点Logは字が黒く頭に青いLogという文字が出るので視認しやすいので、Logで切ってます。

ファイルメーカーの保険情報を取り出す



その下の8行目から25行目 tell application "Filemaker Pro"で始まるセクションはファイルメーカー内に格納されている保険情報を取り出す物になっていて。 もしも保険者番号が空白だった場合、ORCAからデーターを再度インポートするための Insurance_CheckDate_main() of orca_API_mainを入れてます。 
このときORCAでは保険番号と記号は全角で入力されていますので、全角を半角に変換するためのスクリプト ZenToHanを使ってます。 これもピヨマルさんのライブラリーからコピーして使わせていただいています。
過去のMacOSだと標準でphpもコール出来たので、phpのコマンドでmb_convert_kanaを使えて、全角半角変換はシングルラインのdo shell scriptで出来たんですが、今はそれがないですので・・。 OSがMontereyになったときに更新しました。 

ファイルメーカーの日付は特殊



18行目ですね。 次はファイルメーカー上での生年月日は1995/2/4見たいな形式や 1995.4.6みたいなバラバラな形式で入力されているみたいなので、それをいったん、sedをつかって区切り文字を-に変換した後、 date関数で 19950204と言う形式に変更してます。 シングルラインにすることで使い回しが楽になります。 これでオンライン資格確認が要求する日付のフォーマットに変更出来ました。 

その下のptidPT_idは私の不手際で初めにカルテを作った時に、テーブルが変わると患者番号の定義がptidpt_idの二通り作っちゃってたのでこの行があります。 今回の使うファイルメーカーのレイヤではptidと定義されているのですが、将来別のレイヤで動作させる可能性も考慮して、try on error関数を使って、エラーがあれば次でという方法で患者番号を取り出してます。 最初のデザインが悪いとこうなるんですよね。

これでフェーズ1は終了です。 マック上なのでコピーするときにシングルクオーテーションが斜め(`)になってたり、縦に(')なってたりしてますが、基本は縦にしといた方がよいと思います。 このハンドラーは今動いている物をそのまま開示してますので、申し訳ないですがその点ご容赦ください。

三好クリニックでの電子カルテ・レセコン