オンライン資格確認 導入記 (No.12)       2021.6.27 更新

遠隔操作で要求XMLを投函し, 回答XMLを取り出す


File と  Relationの説明 (Fig 1)


A_PtInfo は受診者基本 Fileです。

K_XML Fileには オンライン資格確認のデータを貯めておきます。このFileには Q_XMLとS_XMLの2つのTableを作成します。前者に要求XML, 後者に回答XMLを収納します。

A_Infoのと受診者IDとAddTx(追加文字1)でQ_XML をrelationさせています。

A_Infoのと受診者IDとS_XMLのFile とは 受診者のIDとtimestamp(処理実行日時Text)でrelationさせています。


Filemakerの電子カルテからオンライン資格確認のデータを取り込む概念図(Fig2)


動作の概略を説明します。


① A_PtInfo File(受診者基本File)で 要求XMLを作成する

内容はRoad9で記しましたような形になります。


これは ひながた

"<?xml version='1.0' encoding='UTF-8' standalone='no'?>  (両端以外Single quatation !! )

<XmlMsg>

<MessageHeader>

    <QualificationConfirmationDate>TODAY</QualificationConfirmationDate>

    <MedicalInstitutionCode>6540212424</MedicalInstitutionCode>

    <ArbitraryFileIdentifier >CLINICID</ArbitraryFileIdentifier >

</MessageHeader>

<MessageBody>

    <QualificationConfirmSearchInfo >

        <InsurerNumber>INSNUM</InsurerNumber>

        <InsuredCardSymbol>INSSYMB</InsuredCardSymbol>

        <InsuredIdentificationNumber>IDTNUM</InsuredIdentificationNumber> 

        <InsuredBranchNumber></InsuredBranchNumber> 

        <Birthdate>BIRTHD</Birthdate>

        <LimitApplicationCertificateRelatedConsFlg>1</       

                LimitApplicationCertificateRelatedConsFlg>

    </QualificationConfirmSearchInfo> </MessageBody>

</XmlMsg>"


の赤字の部分を実際の受診者のデータで置き換えます。<MedicalInstitutionCode>6540215424 は医療機関IDごとに 固定です。

受診者ID (数字) が 21060 なら日付のdataを加えて

OQSsiquc01req_2021052921060.xml というFile名にします。


② A_Info Fileで要求XMLを作成し, K_XMLに引き渡します。

複数回の資格問い合わせもあり得るので, 問い合わせのたびにQ_XML Tableの新規レコードを作成します。それらは重複レコードの性格を持ちますが,作成時のTimestampで区別されます。レコード作成時に Aから 受診者番号, 要求XMLが引き渡されます。


③ 直近のレコードを1件抽出して File共有状態にある オンライン資格確認端末の req Folderに OQSsiquc01req_2021052921060.xml というFileをエキスポートします。


④ 数秒で回答XMLが res Folderに返ってきますので, その直近のXMLを含めてすべてのXMLを ファイル共有を利用して S_XML Tableに インポートします。ちなみに要求するScriptと 確認するScriptを上の要求と確認を (間に5秒程度の休止を入れるとして) 連結したScriptも実行できますが, そうすると, res Folderに新たにXMLが入ってきたということが, Filemaker側で認識できないようです。なので,要求のあと,いったんScriptを終了して, 確認行為を行うことになります。

このときはres FolderのすべてのXMLを複数のテキストデータとして読み込みます。今のところMac環境で Filemaker v18以上の環境でないとうまくゆきません。(Road11で記載)

res Folderのdataが多くなると, 動作に時間がかかることになりますので 毎日,あるいは数日間隔で res Folderのdataを削除します。

読み取った複数のすべてのレコードの処理実行日時と受診者番号をFieldの全置換で抽出します。



ここではすべてのFieldをXMLから読み取る必要はありません。

ここで, 処理実行日時の直近のレコードを選択すればいいのですが,受診者を間違えないために, 念のため Aからスクリプト引数で引き継がれた受診者番号(S124_request_Num_G)で検索をかけて, その中で処理実行日時の直近のレコードを選択することにします。

そのレコードの処理実行日時のtext データをスクリプト引数として , こんどはAに引き渡します。これと受診者番号が A-K File間のrelation keyになります。


⑤ Activityを A_PtInfo Fileに移動して, A-K File間で 受診者番号,処理実行日時でrelationをかけて, S_XML Tableをみると,それが回答XMLのデータとなります。


顔認証の場合は



1. 新規受診者が来院したときは,

a. マイナンバーカードを顔認証端末に通して,”認証されたら”自動的に基金サーバーに問い合わされて, オンライン資格確認端末の face FolderにXMLが返されます。


b. 前もってA で 新しい受診者の番号をふって, (これをK Fileに伝達して), 上記と同様にface Folderの複数のXMLデータをTextとして K Fileにインポートします。


c. これらのレコードには受診者番号の情報は無いので, 処理実行日時の直近のレコードを選択して,そこにAから伝達された受診者番号を書き込み, その処理実行日時をスクリプト引数を介してAに伝達します。


d. 上記と同様に受診者番号と処理実行日時のrelationで Aから S_XML tableのレコードをみるとそれが, 目的の新規受診者のデータです。


  1. 2.既受診者が来院したときは

マイナンバーカードを提出されたときは, 受診券から受診者番号が分かりますから,

上記の確認問い合わせと同様の操作で処理できますが, face Folderに返ってきたXMLには 受診者番号情報は無いので, やはり,直近のレコードを選択します。それにAから伝達された受診者番号を書き込んで, Aからrelationで見ることになります。


FMbat(電子カルテ+レセコン)のデモソフトで,オンライン資格確認に対応させました。 実在のデータを載せると, 実際に稼働することがわかりましたので, 近々 v3.0.0 として公開する予定です。