患者番号一覧の取得

メニュー

更新履歴

 2017-12-20  「レスポンス一覧」に項目を追加。
 
 2014-07-03  「エラーメッセージ一覧」を追加。
 

概要

基準日以降に登録・更新された患者情報を返却します。

リクエストおよびレスポンスデータはxml2形式になります。


テスト方法

  1. 参考提供されている sample_patient_id_list_v2.rb 内の変数HOST等を接続環境に合わせます。
  2. sample_patient_id_list_v2.rb 内の開始日等を接続先の日レセの環境に合わせます。
  3. 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>

処理概要

指定された日付等のリクエストにより、それ以降に追加更新された患者番号の一覧を返却します。

処理詳細

  1. 基準開始、終了日の歴日チェック
  2. class値により新規患者のみ対象、または新規及び更新患者を対象とします。
  3. 返却maxは1000人とし、それ以上存在する場合はその旨を返却します。
  4. テスト患者を「含む・含まない」の選択を可能とします。
  5. 終了日に設定がない時は、開始日以降をすべて対象とし、開始日に設定がない時は、開始日=システム日付として処理します。
  6. 対象が1000件を超える場合は、メッセージにその旨を返却します。
  7. レスポンスデータは以下の順番で返却します。
    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>

リクエスト一覧

番号項目名内容備考
1Base_StartDate開始日2014-05-01
省略可(処理日付)
2Base_EndDate終了日2014-07-01
省略可(99999999)
3Contain_TestPatient_Flagテスト患者区分11:テスト患者対象外

レスポンス一覧

番号項目名内容備考
1Information_Date実施日2014-07-15
 
2Information_Time実施時間15:35:04
 
3Api_Result結果コード(ゼロ以外エラー)00 
4Api_Result_Messageエラーメッセージ処理終了 
5Reskey Patient Info 
6Target_Patient_Count対象件数0002 
7Patient_Information患者情報 (繰り返し 1000)  
7-1Patient_ID患者番号00012 
7-2WholeName漢字氏名日医 太郎 
7-3WholeName_inKanaカナ氏名ニチイ タロウ 
7-4BirthDate生年月日1975-01-01 
7-5Sex性別
(1 :男性、2 :女性)
1 
7-6CreateDate登録日付2014-01-06
 
7-7UpdateDate更新日付2014-07-14
 
7-8
UpdateTime
更新時間
 追加
(2017-12-20)
7-9TestPatient_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と一緒にインストールされます)

sample_patient_id_list_v2.cs

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未登録

 

 

 

このページのトップへ