患者番号一覧の取得
メニュー
- 更新履歴
- 概要
- テスト方法
- リクエスト(POSTリクエスト)サンプル
- レスポンスサンプル
- リクエスト一覧
- レスポンス一覧
- Rubyによるリクエストサンプルソース
- C#によるリクエストサンプルソース
- エラーメッセージ一覧
更新履歴
2017-12-20 「レスポンス一覧」に項目を追加。
2014-07-03 「エラーメッセージ一覧」を追加。
概要
基準日以降に登録・更新された患者情報を返却します。
リクエストおよびレスポンスデータはxml2形式になります。
テスト方法
- 参考提供されている sample_patient_id_list_v2.rb 内の変数HOST等を接続環境に合わせます。
- sample_patient_id_list_v2.rb 内の開始日等を接続先の日レセの環境に合わせます。
- ruby sample_patient_id_list_v2.rb により接続。
リクエスト(POSTリクエスト)サンプル
POST : /api01rv2/patientlst1v2?class=01 class=01 (新規・更新対象) ※患者番号テーブルの更新日・登録日が、開始日〜終了日の範囲内であれば対象とします。 class=02 (新規対象) ※患者番号テーブルの登録日が、開始日〜終了日の範囲内であれば対象とします。 期間内に新規登録した患者のみ対象となります。
Content-Type: application/xml
application/xml の場合の文字コードは UTF-8 とします。
<data>
<patientlst1req type="record">
<Base_StartDate type="string">2014-05-01</Base_StartDate>
<Base_EndDate type="string">2014-07-01</Base_EndDate>
<Contain_TestPatient_Flag type="string">1</Contain_TestPatient_Flag>
</patientlst1req>
</data>
処理概要
指定された日付等のリクエストにより、それ以降に追加更新された患者番号の一覧を返却します。
処理詳細
- 基準開始、終了日の歴日チェック
- class値により新規患者のみ対象、または新規及び更新患者を対象とします。
- 返却maxは1000人とし、それ以上存在する場合はその旨を返却します。
- テスト患者を「含む・含まない」の選択を可能とします。
- 終了日に設定がない時は、開始日以降をすべて対象とし、開始日に設定がない時は、開始日=システム日付として処理します。
- 対象が1000件を超える場合は、メッセージにその旨を返却します。
- レスポンスデータは以下の順番で返却します。
class=01は、更新日、更新時間、登録日、患者番号順
class=02は、登録日、患者番号順
※ここでの「更新」とは、「12 登録」で「登録」ボタンを押下ことを指します。何も修正することなく「登録」ボタンを押しても対象となります。
※データ移行したデータの場合、登録日・更新日が設定されていないことがあります。
レスポンスサンプル
<xmlio2>
<patientlst1res type="record">
<Information_Date type="string">2014-07-15</Information_Date>
<Information_Time type="string">15:35:04</Information_Time>
<Api_Result type="string">00</Api_Result>
<Api_Result_Message type="string">処理終了</Api_Result_Message>
<Reskey type="string">Patient Info</Reskey>
<Target_Patient_Count type="string">0002</Target_Patient_Count>
<Patient_Information type="array">
<Patient_Information_child type="record">
<Patient_ID type="string">00011</Patient_ID>
<WholeName type="string">日医 一郎</WholeName>
<WholeName_inKana type="string">ニチイ イチロウ</WholeName_inKana>
<BirthDate type="string">1975-01-01</BirthDate>
<Sex type="string">1</Sex>
<CreateDate type="string">2011-09-07</CreateDate>
<UpdateDate type="string">2014-05-13</UpdateDate>
<TestPatient_Flag type="string">0</TestPatient_Flag>
</Patient_Information_child>
<Patient_Information_child type="record">
<Patient_ID type="string">00012</Patient_ID>
<WholeName type="string">日医 太郎</WholeName>
<WholeName_inKana type="string">ニチイ タロウ</WholeName_inKana>
<BirthDate type="string">1975-01-01</BirthDate>
<Sex type="string">1</Sex>
<CreateDate type="string">2014-01-06</CreateDate>
<UpdateDate type="string">2014-07-14</UpdateDate>
<TestPatient_Flag type="string">0</TestPatient_Flag>
</Patient_Information_child>
</Patient_Information>
</patientlst1res>
</xmlio2>
リクエスト一覧
番号 | 項目名 | 内容 | 例 | 備考 |
---|---|---|---|---|
1 | Base_StartDate | 開始日 | 2014-05-01 | 省略可(処理日付) |
2 | Base_EndDate | 終了日 | 2014-07-01 | 省略可(99999999) |
3 | Contain_TestPatient_Flag | テスト患者区分 | 1 | 1:テスト患者対象外 |
レスポンス一覧
番号 | 項目名 | 内容 | 例 | 備考 |
---|---|---|---|---|
1 | Information_Date | 実施日 | 2014-07-15 | |
2 | Information_Time | 実施時間 | 15:35:04 | |
3 | Api_Result | 結果コード(ゼロ以外エラー) | 00 | |
4 | Api_Result_Message | エラーメッセージ | 処理終了 | |
5 | Reskey | Patient Info | ||
6 | Target_Patient_Count | 対象件数 | 0002 | |
7 | Patient_Information | 患者情報 (繰り返し 1000) | ||
7-1 | Patient_ID | 患者番号 | 00012 | |
7-2 | WholeName | 漢字氏名 | 日医 太郎 | |
7-3 | WholeName_inKana | カナ氏名 | ニチイ タロウ | |
7-4 | BirthDate | 生年月日 | 1975-01-01 | |
7-5 | Sex | 性別 (1 :男性、2 :女性) | 1 | |
7-6 | CreateDate | 登録日付 | 2014-01-06 | |
7-7 | UpdateDate | 更新日付 | 2014-07-14 | |
7-8 | UpdateTime | 更新時間 | 追加 (2017-12-20) | |
7-9 | TestPatient_Flag | テスト患者区分(0 :テスト患者でない、1 :テスト患者である) | 0 |
Rubyによるリクエストサンプルソース
Rubyのバージョンが1.9.2以前の環境の場合、HTTPのバージョン指定を1.1に変更する必要があります。
Rubyのバージョンを確認後、以下のように該当箇所を変更して下さい。
- Ruby1.9.2以降の場合
Net::HTTP.version_1_2
- Ruby1.9.2以前の場合
Net::HTTP.version_1_1
Rubyのバージョンが1.9.1以降の環境(日レセ4.8以降の環境)ではソースファイル内の文字コードの指定が必要になります。
サンプルソース内に以下の一行が記述されていることを確認して下さい。
# -*- coding: utf-8 -*-
sample_patient_id_list_v2.rb (xml2)
#!/usr/bin/ruby
# -*- coding: utf-8 -*-
#------ 患者番号一覧取得
require 'uri'
require 'net/http'
Net::HTTP.version_1_2
HOST = "localhost"
PORT = "8000"
USER = "ormaster"
PASSWD = "ormaster"
CONTENT_TYPE = "application/xml"
req = Net::HTTP::Post.new("/api01rv2/patientlst1v2?class=01")
# class :01 新規・更新対象
# class :02 新規対象
#
#
BODY = <<EOF
<data>
<patientlst1req type="record">
<Base_StartDate type="string">2012-06-01</Base_StartDate>
<Base_EndDate type="string">2012-06-30</Base_EndDate>
<Contain_TestPatient_Flag type="string">1</Contain_TestPatient_Flag>
</patientlst1req>
</data>
EOF req.content_length = BODY.size req.content_type = CONTENT_TYPE req.body = BODY req.basic_auth(USER, PASSWD) puts req.body Net::HTTP.start(HOST, PORT) {|http| res = http.request(req) puts res.body }
C#によるリクエストサンプルソース
Windowsでの実行環境
- Microsoft Visual Studio 2008以降
- .NET Framework 2.0 SDK(C#コンパイラを含む.NET Frameworkの開発ツール)
(Microsoft Visual Studioに含まれています)
Ubuntuでの実行環境
- MonoDevelop 2.2(1.0でも実行可能)
- mono-gmcs(C#コンパイラ)
(MonoDevelopと一緒にインストールされます)
using System;
using System.IO;
using System.Net;
using System.Text;
namespace PatientIdList
{
class MainClass
{
public static void Main(string[] args)
{
string HOST = "localhost";
string PORT = "8000";
string USER = "ormaster";
string PASSWD = "ormaster";
string CONTENT_TYPE = "application/xml";
string URL = "http://" + HOST + ":" + PORT + "/api01rv2/patientlst1v2?class=01";
/*
class :01 新規・更新対象
class :02 新規対象
1.開始日 Base_StartDate (IMPLIED)
2.終了日 Base_EndDate (IMPLIED)
3.テスト患者区分 Contain_TestPatient_Flag (IMPLIED)
REQUIRED : 必須 IMPLIED : 任意
*/
string BODY = @"
<data>
<patientlst1req type=""record"">
<Base_StartDate type=""string"">2012-06-01</Base_StartDate>
<Base_EndDate type=""string"">2012-06-30</Base_EndDate>
<Contain_TestPatient_Flag type=""string"">1</Contain_TestPatient_Flag>
</patientlst1req>
</data>
";
byte[] BODY_byte = Encoding.UTF8.GetBytes(BODY); HttpWebRequest req = (HttpWebRequest) HttpWebRequest.Create(URL); req.Method = "POST"; req.ContentType = CONTENT_TYPE; req.ContentLength = BODY_byte.Length; req.Credentials = new NetworkCredential(USER, PASSWD); Console.WriteLine(BODY); HttpWebResponse res = null; try { Stream reqstream = req.GetRequestStream(); reqstream.Write(BODY_byte, 0, BODY_byte.Length); reqstream.Close(); res = (HttpWebResponse) req.GetResponse(); Console.WriteLine(res.ResponseUri); Console.WriteLine(res.StatusDescription); } catch(WebException wex) { if(wex.Status == WebExceptionStatus.ProtocolError) { HttpWebResponse err = (HttpWebResponse) wex.Response; int errcode = (int) err.StatusCode; Console.WriteLine(err.ResponseUri); Console.WriteLine("{0}:{1}", errcode, err.StatusDescription); err.Close(); } else { Console.WriteLine(wex.Message); } } if(res != null) { Stream str = res.GetResponseStream(); StreamReader strread = new StreamReader(str); Console.WriteLine(strread.ReadToEnd()); strread.Close(); str.Close(); res.Close(); } } } }
エラーメッセージ一覧
エラーコード | エラーメッセージ |
---|---|
01 | 開始日付>終了日付です |
02 | テスト患者区分がありません |
10 | 該当患者が1000件以上となります |
20 | 該当患者がありません |
89 | 職員情報が取得できません |
医療機関情報が取得できません | |
システム日付が取得できません | |
患者番号構成情報が取得できません | |
グループ医療機関が不整合です。処理を終了して下さい | |
システム項目が設定できません | |
90 | 他端末使用中 |
91 | 処理区分未設定 |
97 | 送信内容に誤りがあります |
98 | 送信内容の読込ができませんでした |
99 | ユーザID未登録 |