オンライン資格確認Phase04b

最後にPh02a_LoadXMLDataの導入部分を解説します。 このパートはXMLデーターを実際に読み込む部分で、顔認証機能付きカードリーダのデーターからのデーター確認パーツにも流用しているので少し構造が複雑になっています。

Phase02a_LoadXMLData

今回は読み込みの原理だけ解説して終わりにします。 この部分はTry構文が多いので、字だけ取り込むとかなりの長さになりますし、私自身多くの経験を積んでいないので実際にサーバーが返してくるデーターがどのような物かというバグ取りの期間を取ってませんので(実際にエラーが出たら運用中にコードをその場で書き換えてますので)、完成にはほど遠いと言う事もあります。 現状とても安定してますがデータベースの構造が一定ではないので予想外の反応を示すことも多いです。 なので自分でコードを書かれることをお勧めします。

このパーツでも2行目は初期値の設定ですが、これはマイナンバー保険証の時に戻り値にEr=Errorを返してメインパーツでエラー処理をする様に設定している為初期値にErの定義をしています。
3行目のqにはRecentXMLのエリアスが格納されてますので そのq's RecentXML値を使って ShellのCatでデーターをsoと言う変数に格納します。
空白行を挟んで5行目の tell application "System Events"はこれから扱うXMLデーター構造解析にSystem Events内のXML スイーツを使うのでコールしてます。
6行目は先ずsoから新しいXML構造を作りそれをxml_dataに投入してます。 
7行目ではその構造の中のXmlMsgと言うタグのした、messageBodyと言うタグの中に囲まれたXMLデーターを MessageBodyと言う変数に格納してます。 このXML elementは内容を全部一覧で確認することが出来ないので非常にやりにくくて嫌なのですが、自分で作ろうとするとかなり面倒くさい構造をしているので、やはりアップルが用意したこのXMLスイーツを使う事にしてます。
8行目はそのMessageBodyに含まれる ProcessingResultStatusと言うXMLエレメントの変数をvalueで取り出して ProcessingResultSatusと言う変数に入力してます。 
ちなみに13行目のxml_fという変数が設定されてない気がしますね・・。これはエラー字に発生するメッセージ用のコメントですが、バグですね。 後で直しておこうかな・・。 おそらくq's RecentXMLと記載するのが正しいと思います。
18行目はSlackと言う関数が呼び出されてますねこれは、私のクリニックのスタッフは声を出せない時にメッセージのやりとりをSlack=メッセンジャーを使っています。 ですので結構皆でこのメッセージを共有することが出来るのですが、そのメッセンジャーにエラーのメッセージをAPIを使って流し込んでいます。
スラック部分
例えばこんな感じで。 もちろんtokenChannelは環境に合わせて変える必要が有りますね。 Slack側の設定はこちらがよくまとまってました。
こうやって置くとエラーが出たときに受け付けだけじゃなくて、プログラムを作っている僕にもメッセージが戻ってくるので、バグが発生してからその修正までの時間が短くなります。 運用しながらスクリプトを修正するには非常に役に立ちます。 一番まずいのはユーザーが自分の操作ミスではないかと受付で2分とか3分とか悩んでしまう時間のロスです。 エラーがでたらこれはバグだから放置してねと一言声を掛けられる態勢があるだけでユーザーの安心感は大分違います。

この後XMLデーターを一つ一つ取り出してはqレコードに格納して行く作業を行います。 レコード形式だと視認性がよくてハンドルがとても楽なのでその後のスクリプトで使い易いです。

ザックリとですが以上がXMLデータを吸い出す基本構造になります。


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