電子処方箋 導入記 (No.16)
実際にやってみると(その5) 電子署名つき確定処方箋XML作成(AIDsign)
いよいよ電子署名つきの確定電子処方箋作成に挑戦します。
MEDISのHPKI_2nd Card は 試験接続を申し込んだのですが, インターネットを介するので, 申し込み書には
利用アプリのFDQNを含むURL,
利用アプリのグローバルIP アドレス
PC(ブラウザ)のIPアドレス
など, 通信の設定の記載を求められます。
専門知識が必要なようで, ちょっと, 私の理解が追いつきません。
結局, なんとか記入して 申込書を送付しましたが, なしのつぶてで, それから 進んでいません。
どうも大きな病院などをターゲットにしているようで, (知識のない)個人事業者は 相手にされないようです。
そんな折に, ONSから Windows, Mac どちらでもNativeに動作する, 電子処方箋作成モジュール提供のアナウンスがありました。
https://www.mhlw.go.jp/content/001073985.pdf
現在 2社がMacで使えるモジュール提供を発表しています。
1. (株)アイコム https://www.ai-com.co.jp/aidsign/
-
2.セイコーソリューションズ(株) https://www.seikotrust.jp
ただ, セイコーソリューションズは ホームページをみても 内容の記載が見つかりません。
すぐに使えるのは(株)アイコムのAIDsign SDK for HPKI (電子処方箋署名共通モジュール) です。
コマンド形式, ライブラリ形式, プラグイン形式があり, いずれもMac,Windowsともサポートされています。
さっそく購入して動作検証してみました。コマンドライン形式です。
安価な価格で購入させていただきました。個人事業主には大変ありがたいです。
Mac OS 10.15 (Catalina)で行いました。(OS10.13 HighSierra 以降 機能します)
ソフトと資料をdownloadして指示通りにinstallします。これは簡単で, 特に迷うところもありません。MacではApplication/Utility/AIDsign Folderに installされます。
IC-Card readerは I・O Data社のものを使用しました。driverは前もってメーカーのものをinstallしておく必要があります。
IC-Card Reader を USBに接続します。その上にHPKIカードを載せます。
ターミナル を起動します。以下 ターミナルの画面表示 ( User: Macna$ )と補足です。
-
1.IC-Cardを認証します。
Macna$ cd ~/Documents/ (Return)
Macna$ hpkisigntool -getcert -out ~/Documents/signcert.cer (Return)
Smart card is ready to use: HPKI
証明書取得正常終了:/Users/yana/Documents/signcert.cer
IO dataの IC card Reader上のHPKIカードが 認識されました。
2. 処方箋CSVにHPKIカードで署名を付与します。
まえもって, shohousen.csv という File名の 処方箋CSVをDocument (書類) Folderに保存しておきます。
Macna$ cd ~/Documents/ (Return)
Macna$ hpkisigntool -sign -sflag 0 -in ~/Documents/shohousen.csv -out ~/Documents/signed.xml (Return)
Smart card is ready to use: HPKI..... PIN(あらかじめ登録された4文字の数字)入力を促されます。
PIN verified: Smart card is unlocked
署名正常終了:/Users/yana/Documents/signed.xml
shohousen.csvを読み取って, signed.xml という署名付き処方箋がDocuments に作製されました。
3. 検証します
Macna$ cd ~/Documents/ (Return)
Macna$ hpkisigntool -verify -in ~/Documents/signed.xml -out ~/Documents/verify.xml (Return)
検証正常終了:/Users/yana/Documents/verify.xml
verify,xml という xmlが Documents Folderに作製されました。
-
4.CSVを取り出します。
Macna$ cd ~/Documents/ (Return)
Macna$ hpkisigntool -getdata -in ~/Documents/signed.xml -outdir ~/Documents/ (Return)
CSV取得正常終了:処方箋情報.csv
処方箋情報.csv を見ると 元の CSVと同じであることが分かります。
と, 割合簡単に署名付き処方箋CSVが作製されました。
前ページ で紹介した確定処方箋作製と同じ方法で, これを電子処方箋Formetに組み込みます。
-
5.signed.xmlをBase64でencode...A
-
6.電子処方箋の Format に( 医療機関コード + A ) 組み込んで...B
<issueType>1</issueType>...署名付きの電子処方箋紙であることをを最後に書き足します。
-
7.B から LF,CR 削除 ... Substitute ( B ; [ Char(10) ; “” ] ; [ Char(13) ; “” ] )...C
C を req_Folderに投函します。
File名は 紙の場合と同じ EPSsiPIR01req_xxxxxxxxxxxx.xml です。
これで署名付き電子処方箋が受け入れられました。(試験環境で行いました。)
PIN認証 Stepの省略
なお, 電子処方箋作製のたびに HPKIカードのPIN認証は煩わしいので, 初回のみ認証してあとは省略することもできます。
例えば、6時間、PIN入力を省く場合は、秒単位で記載しますため、6h*60m*60s=21600秒として、
“PASSCACHESEC=21600” というだけ記載したsimple text を “config.ini” というFile名でDocuments Folderにsaveしておきます。
Documents Folderの shohousen.csv から署名付き電子処方箋作製するとき, 最後に -init ~/Documents/config.ini を加えて
hpkisigntool -sign -sflag 0 -in ~/Documents/shohousen.csv -out ~/Documents/signed.xml -init ~/Documents/config.ini
とすれば, 6時間 PIN認証が省略されます。ただし, 初回は必要です。
保存Folderの指定
また 処方箋csv, sined.xml を別のFolderにsaveしたいなら, たとえば, Desktopの Card というFolderに保存するなら,Documents (パス)を Desktop/Card といれかえます。さらに csv と signed.xml とを別々のFolderに保存したければ, Folder名を変えてパスを書き換えればOKです。
File名の個別指定
また, 受診者の shohousen.csv は このFile名だと, 毎回上書きされますので, それを残したければ CSVのFile名を たとえば, shohousen_3456_20230321.csv と番号+日付付きFile名にしておけば
上書きされません。 (これは電子カルテ側でコントロールします) ただし同日再診に注意。
署名処方箋もFile名を指定できます。
Terminal の命令は
hpkisigntool -sign -sflag 0 -in ~/Desktop/Card/shohousen_3456_20230321.csv -out ~/Desktop/Card/signed_3456_20230321.xml
Filemakerから自動操縦
Filemakerのレイアウトに Terminalの命令を任意フィールド “order1”, “order2” を表示させて,
( Script Step “コピー” は そのFieldを表示させたレイアウトのときに機能します。老爺心ながら)
order1
cd ~/Documents/ (最後に改行)
order2
hpkisigntool -sign -sflag 0 -in ~/Desktop/Card/shohousen_3456_20230321.csv -out ~/Desktop/Card/signed_3456_20230321.xml (最後に改行)
Filemaker Script1
------------------------
コピー [ Field order1]
Applescriptを実行
tell application "Terminal"
activate
tell application "System Events"
key code 9 using {command down} --コマンドキーを押しながら, 9 = “V”
end tell
end tell
------------------------
Filemaker Script2 (コピーするFieldを変えるだけです)
------------------------
コピー [ Field order2 ]
Applescriptを実行
tell application "Terminal"
activate
tell application "System Events"
key code 9 using {command down} --コマンドキーを押しながら, 9 = “V”
end tell
end tell
------------------------
この2つのScriptを連続して実行します。この単純なコピペ Script で Terminal を操縦できます。
なんちゃってApplescriptです。本当は, クリップボードを使わない, 高度なApplescriptがあるようですが, 不勉強で分かりません。
ただ, これを実行すると, return記号の関係か?, 署名が重複して実行されることがあります。
そこで, 2つの命令を && で合併して一つの命令としてTerminalに伝えます。
order12というFieldを定義して, 以下のTextを表示させます。
order12
cd ~/Documents/ && hpkisigntool -sign -sflag 0 -in ~/Desktop/Card/shohousen_3456_20230321.csv -out ~/Desktop/Card/signed_3456_20230321.xml (最後に改行)
Script12
------------------------
コピー [ Field order12 ]
Applescriptを実行
tell application "Terminal"
activate
tell application "System Events"
key code 9 using {command down} --コマンドキーを押しながら, 9 = “V”
end tell
end tell
------------------------
これでスムーズな操作になります。