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メーリングリストでも多くのご教示をいただきました。
これらの情報をいただいた方に感謝します。

もし誤りのご指摘やご意見があればメールなどでご連絡ください。

戻る