[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[orca-tech:01877] OrcaAPI を利用する患者情報



エクセルからOrcaのAPIを利用するVBAプログラムをつくってみました

今回は患者情報取得のGETメソッドによるものです。

Windows7がShift-JIS、OrcaのAPIがutf-8のリナックス形式ファイルなので、
文字化けなどの処理に手間をくいました。
Orcaからのレスポンスはxmlファイルに保存するようにしてあります。
レスポンスを読み込んでxmlを自前のVBAプログラムで処理も可能ですが,
やはりエクセルのxml読み書き機能を使ってxmlファイルを処理するのが王道と考えまし
た。

バグやプログラムに対するアドバイスお聞かせください。
Excel2010で動きます。

なおプログラムは、すず工房さんのHPを参考にさせていただきました。
http://it-doc.jp/index.php/excelforwork/vba/181-get-html

ゆうえん医院@岡山



------------------------------------------------------------
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.1" 'OrcaサーバーのIPアドレス
    PORT = "8000"
    USER = "ormaster"
    PASSWD = "ormaster"

    URL="http://"; & HOST & ":" & PORT & API

    'MsgBox (URL)

    Set Http = CreateObject("MSXML2.XMLHTTP")

    Http.Open "GET", URL, False, USER, PASSWD

    'False:同期通信を指定
    
    Http.send '要求を送信

    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

Sub orca_patientgetv2(pat_id AS String)

    Dim api_command As String
    Dim out_file As String
    
    api_command = "/api01rv2/patientgetv2?id=" & pat_id
    out_file = "patinetget_v2.xml"

    get_orca_api api_command, out_file

End Sub

----------------------------------------------------------