オンライン資格確認Phase03

OnshinシングルPh03

サーバとのやりとりの仕組み



顔認証機能付きカードリーダに接続したWindows PCの共有ボリュームreqにXMLデーターを書き出す部分です。 このXMLデーターを元にサーバ側が回答を共有ボリュームresに返してくれると言うシステムのため、即応性はありませんがほぼ1秒から数秒以内にレスポンスがあります。

XML構文の記述を見やすくするためにサブルーティンハンドラーを作っています


fXMLo

XMLデーター部分の書き方



このパートでは正確なXML構文を維持するためSubroutine ハンドラーを作ってます。 このパートはfXMLo(名称,数値)と言う順ですね。 ORCAへ送られるXMLファイルだとこれに送信される数値のクラス(String, Integer, recordなど)の記載が必要となるので fXML(名称,数値,クラス)というファンクションも作っているので区別するため末尾にoを付けてます。 自分で好きな名前をつけた方がよいでしょう。
ハンドラーの構造は極めてシンプルでこんな物なんですが、これをそのままmainの中で定義すると構文や順序を間違えたり、層構造に矛盾が出たりすることがあるので今回作ってみたのですが、視認性が上がって作業しやすかったです。 XMLのデーターは2行目から16行目で定義してます。 

XMLデーターの確認



ちなみにこのXML0に格納された文章は改行がありませんので目視では見にくいです。 もしも確認されたいようでしたら、
return do shell script "echo " & quoted form of xml0 & "|tidy --wrap 0 --indent-cdata true -xml -utf8 -i "
といった行を挿入して目的のXMLファイルが作成出来ているか確認して見るのもよいでしょう。 
ちなみに何度も言いますがこの構造を一度通すと、MACの改行コードの特殊性の問題で、サーバーがこの改行を認識しない可能性も有るので、tidyでのチェックはバグ取りの時だけにしておいて、実行ファイルでは除外しておく方がトラブルが無くて良いです。 
3行目の医療機関コードは自院の物に変更してくださいね。

あと別の方の情報で XMLの宣言文はダブルクオーテーションの読み取りでエラーが出るらしいと報告があったので、15行目のXMLのヘッダー部分の宣言はシングルクオーテーションにしています。 

XMLファイルへの書き出し



最後はファイルネームを指定しますが、この頭書きOQSsiquc01req_はサーバ側がそのファイルが何に対してリクエストしているかを区別するために使っていると思います。 サーバはいくつかのリクエストに対応していて、詳細はこちらに記載されていました。 今はもう新しいバージョンに更新されているかも知れませんが、ONCのサイトの内側にしかリンクがたどれないので古いバージョンのファイルにリンクを張っておきます。

ファイル名のアンダーバーの後は自由に設定してよいはずで、私の場合日付と患者番号を入力しています。

後はファイルの絶対パスをマック形式でOuに設定し、それをUnix型の形式に変更するために、POSIX pathで変更します。 ファイルが無いとecho でファイル出力してもエラーになりますので、先ずtouch コマンドをしたあと、echo > でファイルへ出力します。
こうやって出力しておくと数秒のうちにXMLファイルデーターがサーバーにロードされ、その結果がボリュームresへ帰ってくると言う仕組みの様です。

次は最後になります、XMLファイルからのデータの読み込み方法について解説して見ましょう。

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