ruby と c でOrca API を使う方法は、ORCAホームーページに書かれていますので、エクセルのVBAからAPIを呼び出す方法について解説します。
このプログラムを使用するためには参照設定で[Microsoft HTML Object Library]を参照する必要があります。
なお結果のXMLファイルは、VBAで処理してワークシートに読み込むことも可能ですが、エクセルの[データ]-[その他のデータソース]-
[XML データ
インポート]を利用してワークシートに読み込むのが簡単だと思います。なおこのXMLファイルは、上記の手順で読み込むなら文字コードがUTF-8でなけ
ればなりません。
----------------------(GETリクエストによるVBAプログラム)---------------------------------
Public Sub get_orca_api(API As String, xml_file As String)
'要求されたAPIにGETリクエストする
Dim Http As Object
Dim inStrm As Object
Dim URL As String
Dim HOST As String
Dim PORT As String
Dim USER As String
Dim PASSWD As String
HOST = "192.168.0.10" 'サーバーのURL
PORT = "8000"
USER = "orca"
'ユーザー名
PASSWD = "password" 'パスワード
URL = "http://" & HOST & ":" & PORT & API
Set Http = CreateObject("MSXML2.XMLHTTP")
Http.Open "GET", URL, False, USER, PASSWD
'false:同期通信
'要求を送信
Http.send
If Http.Status = 200 Then '同期通信のチェック
'文字化けする場合は、incharsetを指定してこのプロシージャを呼び出す
Set inStrm = CreateObject("ADODB.Stream")
With inStrm
.Open
.Position = 0
.Type = 1 'TypeBinary ← バイナリのまま
.Write Http.responseBody 'streamに書き込む
.Position = 0
.Type = 2 'TypeText テキストで読みだす
.Charset = "UTF-8"
'stream から読み取られるデータを指定文字エンコードに変換
.SaveToFile xml_file, 2
'指定されたファイルに書き込む
.Close
End With
Set inStrm = Nothing
End If
Set Http = Nothing
End Sub
----------------------------------------------------------------------------------------------------------------
使用例 患者基本情報の取得
http://ホスト名:ポート番号(デフォルト8000)/api01rv2/patientgetv2?id=xxxx (xxxx:患者番号)
IDが"1000"の患者の情報を検索取得する
http://localhost:8000/api01rv2/patientgetv2?id=1000 にアクセスして
C:ï¥ORCA¥patinetget_v2.xml に結果を返却する
Sub orca_patientget_v2()
Dim api_command As String
Dim out_file As String
api_command = "/api01rv2/patientgetv2?id=" & ”1000”
out_file = "C:¥ORCA¥patinetget_v2.xml"
get_orca_api api_command, out_file
End Sub
----------------------(POSTリクエストによるVBAプログラム)------------------------------
Public Sub PostOrcaAPI(API As String, xml_file As String, RequestStr As String)
'要求されたAPIにPOSTリクエストする
Dim Http As Object
Dim inStrm As Object
Dim URL As String
Dim HOST As String
Dim PORT As String
Dim USER As String
Dim PASSWD As String
HOST = "192.168.0.10" 'サーバーのURL
PORT = "8000"
USER = "orca"
'ユーザー名
PASSWD = "password" 'パスワード
URL = "http://" & HOST & ":" & POST & API
Set Http = CreateObject("MSXML2.XMLHTTP")
Http.Open "POST", URL, False, USER, PASSWD
Http.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
'false:同期通信
'要求を送信 パラメーターも送信
Http.send (RequestStr)
If Http.Status = 200 Then '同期通信のチェック
Set inStrm = CreateObject("ADODB.Stream")
With inStrm
.Open
.Position = 0
.Type = 1 'TypeBinary バイナリのまま
.Write Http.responseBody 'streamに書き込む
.Position = 0
.Type = 2 'TypeText テキストで読みだす
.Charset = "UTF-8"
'stream から読み取られるデータを指定文字エンコードに変換
.SaveToFile xml_file, 2
'指定されたファイルに書き込む
.Close
End With
Set inStrm = Nothing
End If
Set Http = Nothing
End Sub
---------------------------------------------------------------------------------------------------------------------------------------
使用例 指定された日付の受付一覧返却
POST : /api01rv2/acceptlstv2?class=01
class = 01 は受付中(会計待ち対象)
class = 02 は会計済(会計済み対象)
class = 03 は全受付対象
Content-Type: application/xml
Sub orca_acceptlstv2()
Dim api_command As String
Dim out_file As String
RequestStr As String
api_command = "/api01rv2/acceptlstv2?class=03"
out_file = "C:¥ORCA¥acceptlstv2_ans.xml"
PostOrcaAPI api_command, out_file, RequestStr
End Sub
---------------------------------------------------------------------------------------------------------------------------------------
なお以上のプログラムは、多くのネット上の情報を参考にさせていただいて作成したものです。
ORCAメーリングリストでも多くのご教示をいただきました。
これらの情報をいただいた方に感謝します。
もし誤りのご指摘やご意見があればメールなどでご連絡ください。
戻る