ニッチな話題ですがお仕事で扱っている日医がオープンソースとして主に診療所等など用に公開しているORCAについて外部アプリケーションから患者の氏名などのデータを利用する案件があったのでメモ。
ORCAからデータを取得するにはAPIを使用するかPostgresqlのDBから直接読み込む方法があるがスマートな方法であるAPIを使用する事にした。
以下VB.Netでのサンプル。
このサンプルは唯一getメソッド?でアクセルするタイプのAPIです。
(https://www.orca.med.or.jp/receipt/tec/api/patientget.html)
サンプルはエラー処理などキチンとしていないのでもし再利用する方がいましたらその辺注意してください。
またC#のサンプルが本家にありますのでそちらも参考にしてください。
Dim USER As String = “ormaster”
Dim PASSWD As String = “ormasterpass”
Dim URL As StringURL = “http://192.168.0.5:8000/api01rv2/patientgetv2?id=<ptnum>”
URL = Replace(URL, “<ptnum>”, “1”) ‘患者番号Dim ResultXML As String
Dim req As HttpWebRequest = CType(HttpWebRequest.Create(URL), HttpWebRequest)
req.Method = “GET”
req.Credentials = New NetworkCredential(USER, PASSWD)
req.PreAuthenticate = True
Dim res As HttpWebResponse = NothingTry
res = DirectCast(req.GetResponse(), HttpWebResponse)Catch wex As WebException
If wex.Status = WebExceptionStatus.ProtocolError Then
Dim err As HttpWebResponse = DirectCast(wex.Response, HttpWebResponse)Dim errcode As Integer = CInt(err.StatusCode)
Console.WriteLine(err.ResponseUri)
Console.WriteLine(“Response server => {0}”, err.Server)
Console.WriteLine(“{0}:{1}”, errcode, err.StatusDescription)err.Close()
Else
Console.WriteLine(wex.Message)
End If
End TryIf res IsNot Nothing Then
Dim str As Stream = res.GetResponseStream()
Dim strread As New StreamReader(str)ResultXML = strread.ReadToEnd()
strread.Close()
str.Close()
res.Close()
End IfGC.Collect()
req.Abort()‘正常に取れたらResultXMLをparseする