先日ORCAカンファレンス2016に参加してきたのですが、今後はデータベースから直接データを取得するのではなく、
APIから取得してくださいと言われたので、シェルスクリプトからでもできるのか挑戦してみました。
ここでの例は、ORCAサーバーのホストがlocalhost、ポートが8000、ユーザー名がormaster、パスワードがpassword、患者番号は000001です。
APIはGETメソッドで取得できるため、curlコマンドが使えそうです。また、結果はXMLで返ってくるため、xmllintコマンドで必要なデータを抽出できそうです。xmllitコマンドはlibxml2-utilsパッケージに含まれているため、最初にインストールしてください。
まずはHTTPヘッダーを確認します。次のコマンドを実行します。
$ curl -X GET '
http://localhost:8000/api01rv2/patientgetv2?id=000001' -I -u ormaster:password
次の結果が返ってくれば成功です。
HTTP/1.1 200 OK
Date: Tue, 05 Jul 2016 05:46:43 GMT
Server: glserver/1.4.9
Content-Type: application/xml
Content-Length: 2500
HTTPのステータスの意味を解説したりはしません。
いよいよ患者情報のXMLを取得します。
$ curl -X GET '
http://localhost:8000/api01rv2/patientgetv2?id=000001' -u ormaster:password -o patient.xml
取得したXMLをpatient.xmlとして保存しています。
patient.xmlの中身を確認します。
$ xmllint --shell patient.xml
シェルの使い方はman xmllintで確認してください。
いよいよ患者氏名を取得します。
$ xmllint --xpath "/xmlio2/patientinfores/Patient_Information/WholeName/text()" patient.xml |nkf -w80 --numchar-input
何故か結果がUnicode文字参照で返ってくるため、nkfコマンドでUTF-8に変換しています。nkfコマンドはjma-receiptがセットアップされている環境であればインストールされているはずです。
posted by 株式会社アプセル at 15:11|
Comment(2)
|
TrackBack(0)
|
技術