2018年8月30日木曜日

②患者基本情報データの取得3

前回、ブログのコメントに書かれている通り、ORCAのWebAPIを利用して患者基本情報をJSON形式で取得する作業を行っていく。

http://172.16.108.251:8000/api01rv2/patientgetv2?id=00001&format=json
このURLを書き込んでみ、IDを「ormaster」、パスワードをいつも使っているやつを打ち込んだら、図1のようなエラーが表示された。
図1:上記のURLを書き込んだ時の画面
調べても、対処法が分からなかった。あと、先生の画面には表示されているはずの画面がここでは表示されなかったのが謎だった。
研究するペースを上げていかないと、間に合わないと感じざるをえない、状況になった。
先生のような画面が表示されるよう、調べていきたい。

また、ORCAから患者基本情報を取得するにあたり、いちいち認証画面が表示されるので、スマホアプリのプログラムで認証情報をORCAへ渡したい。
あるブログを参考にしてみると、この記事が参考になると考えた。この記事によると、ダミーのwebサーバと通信していたところを、プログラムを通じて、ORCAと通信して、本物のデータを引っ張てくるようにしていることが分かった。なので、このプログラムを参考にしていったら、認証情報をORCAに渡せれるのではないかと考えている。

だが、図1のようなエラーがある以上、実験することもできないので、研究するペースを上げて、1つ1つの問題を解決して、早め早めに終わらせられるようにしていきたい。

【コメント】

図1のエラーが出た原因がわかりました。ORCAの動作がおかしくなっていたようです。原因はわかりません。ORCAクライアントを立ち上げると画面は出るものの、ボタンが灰色になって選択できませんでした。
以前も似たようなことがあり、その時はORCAを再起動することにより解消しました。そこで、以下のコマンドを入力してORCAを再起動しました。
 sudo service jma-receipt restart
すると、今度は無事ORCAクライアントからORCAサーバへ接続できました。
その後、ブラウザから 下記URLを入力しました。
http://172.16.108.251:8000/api01rv2/patientgetv2?id=00001&format=json
すると、パスワード認証画面が現れ、IDとパスワードを入力すると、2018年8月9日木曜日のブログ「②患者基本情報データの取得2 」の図1の画面が表示されました。
ということで、図1のエラーの原因はORCAサーバにあったわけです。以後、こういった現象に出くわしたら、まず、ORCAサーバはちゃんと動いているかどうかをORCAクライアントを起動して確かめてください。そしてORCAサーバの調子がおかしいようだったらORCAサーバを再起動してみてください。

次に認証画面ですが、ご指摘の通り、「ゼミの轍」の2016年10月1日土曜日の記事「いよいよORCAとの通信です。」に掲載されたプログラムが参考になります。
そこに掲載されたプログラム(例えば「患者基本情報」)を見てください。4行目以降は、Ajaxを使ってORCAサーバにWebAPIを投げているところです。6行目~8行目はHTTPリクエストに Authorization ヘッダを追加しているところです。 ヘッダの値は
Basic ユーザID:パスワード
において「ユーザID:パスワード」の部分をBase64エンコードしたものです(Javascript関数window.btoaはBase64エンコード関数)。
このようにHTTPリクエストのヘッダ中に認証情報を設定することにより、いちいち認証画面が表示されることを回避できます。

なお、私たちが作成しているスマホアプリはAjaxをそのまま使っているのではなくAngularJSで$httpサービスを利用してWebAPIを投げていますから、その流儀に従ってHTTPヘッダを組み立ててやる必要があります。HTTPリクエスト時のヘッダー情報の設定にはこのサイトが参考になります。試してみてください。





0 件のコメント:

コメントを投稿

レーダーチャートの表示2

前回 レーダーチャートの表示を行うことが出来たので、今回は実際の値を代入したグラフの描画を試みる。 .controller('RaderChartController', ['$scope', 'Countries', funct...