患者病名情報の返却
メニュー
- 更新履歴
- 概要
- テスト方法
- リクエスト(POSTリクエスト)サンプル
- レスポンスサンプル
- リクエスト一覧
- レスポンス一覧
- Rubyによるリクエストサンプルソース
- C#によるリクエストサンプルソース
- エラーメッセージ一覧
更新履歴
2019-07-29 「レスポンス一覧」に項目を追加
2019-05-28 「レスポンス一覧」に項目を追加
2017-05-25 「レスポンス一覧」に項目を追加
2016-09-26 全ての患者病名情報の取得対応。
「リクエスト(POSTリクエスト)サンプル」の処理詳細に説明を追加。
「レスポンスサンプル」に項目を追加。
「リクエスト一覧」「レスポンス一覧」に項目を追加。
2016-04-18 合併症に係わる情報追加対応。
「レスポンス一覧」に項目を追加。
概要
POSTメソッドによる患者病名情報の返却を行います。
リクエストおよびレスポンスデータはxml2形式になります。
テスト方法
- 参考提供されている sample_disease_info.rb 内の変数HOST等を接続環境に合わせます。
- sample_disease_info.rb 内の患者番号等を接続先の日レセの環境に合わせ、送信したい情報を設定します。
- ruby sample_disease_info.rb により接続します。
リクエスト(POSTリクエスト)サンプル
POST : /api01rv2/diseasegetv2?class=01 class = 01 (患者病名情報の取得)
Content-Type: application/xml
application/xml の場合の文字コードは UTF-8 とします。
<data>
<disease_inforeq type="record">
<Patient_ID type="string">00012</Patient_ID>
<Base_Date type="string">2012-05</Base_Date>
</disease_inforeq>
</data>
処理概要
指定された患者番号、基準月のリクエストにより、該当患者の病名情報を返却します。
処理詳細
- 該当患者の返却病名設定のmaxは、200とします。
- 送信された患者番号による患者の存在をチェックします。
- 送信された基準月の妥当性をチェックします。
- 返却順は、開始日の古いものからとします。
(Select_Mode=Allの場合は開始日の降順、表示連番、診療科、登録順) - Select_Mode=Allの場合は基準日の含む月から、遡って転帰済も含め全ての病名も対象とします。
(上限を越えた場合は、その前月までを返却します。All以外の値は全て、指定月で有効な病名を返却します。)
レスポンスサンプル
<xmlio2>
<disease_infores type="record">
<Information_Date type="string">2012-05-29</Information_Date>
<Information_Time type="string">17:11:59</Information_Time>
<Api_Result type="string">00</Api_Result>
<Api_Result_Message type="string">処理終了</Api_Result_Message>
<Reskey type="string">Medical Info</Reskey>
<Information_Overflow type="string">False</Information_Overflow>
<Disease_Infores 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>
</Disease_Infores>
<Base_Date type="string">2012-05</Base_Date>
<Disease_Information type="array">
<Disease_Information_child type="record">
<Disease_InOut type="string">I</Disease_InOut>
<Department_Code type="string">01</Department_Code>
<Insurance_Combination_Number type="string">0002</Insurance_Combination_Number>
<Disease_Name type="string">胃炎</Disease_Name>
<Disease_Single type="array">
<Disease_Single_child type="record">
<Disease_Single_Code type="string">8830417</Disease_Single_Code>
<Disease_Single_Name type="string">胃炎</Disease_Single_Name>
</Disease_Single_child>
</Disease_Single>
<Disease_Category type="string">PD</Disease_Category>
<Disease_StartDate type="string">2012-05-04</Disease_StartDate>
<Disease_EndDate type="string">2012-09-04</Disease_EndDate>
<Disease_OutCome type="string">F</Disease_OutCome>
<Disease_Class type="string">05</Disease_Class>
<Disease_Receipt_Print type="string">1</Disease_Receipt_Print>
<Insurance_Disease type="string">False</Insurance_Disease>
</Disease_Information_child>
<Disease_Information_child type="record">
<Disease_InOut type="string">I</Disease_InOut>
<Department_Code type="string">01</Department_Code>
<Insurance_Combination_Number type="string">0002</Insurance_Combination_Number>
<Disease_Name type="string">急性くも膜下出血の疑い</Disease_Name>
<Disease_Single type="array">
<Disease_Single_child type="record">
<Disease_Single_Code type="string">ZZZ4012</Disease_Single_Code>
<Disease_Single_Name type="string">急性</Disease_Single_Name>
</Disease_Single_child>
<Disease_Single_child type="record">
<Disease_Single_Code type="string">4309001</Disease_Single_Code>
<Disease_Single_Name type="string">くも膜下出血</Disease_Single_Name>
</Disease_Single_child>
<Disease_Single_child type="record">
<Disease_Single_Code type="string">ZZZ8002</Disease_Single_Code>
<Disease_Single_Name type="string">の疑い</Disease_Single_Name>
</Disease_Single_child>
</Disease_Single>
<Disease_SuspectedFlag type="string">SA</Disease_SuspectedFlag>
<Disease_StartDate type="string">2012-05-06</Disease_StartDate>
<Disease_EndDate type="string">2012-09-04</Disease_EndDate>
<Disease_OutCome type="string">F</Disease_OutCome>
<Disease_Class type="string">05</Disease_Class>
<Insurance_Disease type="string">False</Insurance_Disease>
<Classification_Number_Servant type="string">02</Classification_Number_Servant>
<Discharge_Certificate type="string">1</Discharge_Certificate>
</Disease_Information_child>
</Disease_Information>
</disease_infores>
</xmlio2>
リクエスト一覧
番号 | 項目名 | 内容 | 例 | 備考 |
---|---|---|---|---|
1 | Patient_ID | 患者番号 | 00012 | 必須 |
2 | Base_Date | 基準月 | 2012-05 | 未設定時はシステム日付を設定 |
3 | Select_Mode | 転帰済選択区分 | All | 追加 (2016-09-26) |
レスポンス一覧
番号 | 項目名 | 内容 | 例 | 備考 |
---|---|---|---|---|
1 | Information_Date | 実施日 | 2012-05-29 | |
2 | Information_Time | 実施時間 | 17:11:59 | |
3 | Api_Result | 結果コード(ゼロ以外エラー) | 00 | |
4 | Api_Result_Message | エラーメッセージ | 処理終了 | |
5 | Reskey | Medical Info | ||
6 | Information_Overflow | 病名情報オーバーフラグ (True:返却対象の病名が200件を越えている) | False | 追加 (2016-09-26) |
7 | Disease_Infores | 患者病名情報 | ||
7-1 | Patient_ID | 患者番号 | 00012 | |
7-2 | WholeName | 患者氏名 | 日医 太郎 | |
7-3 | WholeName_inKana | 患者カナ氏名 | ニチイ タロウ | |
7-4 | BirthDate | 生年月日 | 1975-01-01 | |
7-5 | Sex | 性別 (1:男性、2:女性) | 1 | |
8 | Base_Date | 基準月 | 2012-05 | |
9 | Disease_Information | 病名情報(繰り返し 200) | ||
9-1 | Disease_InOut | 入外区分 (I:入院、O:入院外) | I | |
9-2 | Department_Code | 診療科コード ※1 (01:内科) | 01 | |
9-3 | Insurance_Combination_Number | 保険組合せ番号 | 0002 | |
9-4 | Third_Party_Mark | 第三者行為区分 (True:対象の保険組合せが第三者行為である) | True | 追加(2019-07-29) |
9-5 | Disease_Name | 病名 | 急性くも膜下出血の疑い | |
9-6 | Disease_Single | 単独病名情報(繰り返し 21) | ||
9-6-1 | Disease_Single_Code | 病名コード | 4309001 | |
9-6-2 | Disease_Single_Name | 単独病名 | くも膜下出血 | |
9-6-3 | Disease_Single_Condition | 単独病名状態 (空白:通常、1:削除、2:廃止(実施日時点での)) | ||
9-7 | Disease_Category | 主病フラグ(PD:主病名) | PD | |
9-8 | Disease_SuspectedFlag | 疑い、急性フラグ (S:疑い、A:急性、SA:急性かつ疑い) | SA | |
9-9 | Disease_StartDate | 病名開始日 | 2012-05-06 | |
9-10 | Disease_EndDate | 転帰日 | 2012-09-04 | |
9-11 | Disease_OutCome | 転帰フラグ (F:治癒、D:死亡、C:中止、S:移行) | F | |
9-12 | Disease_Supplement_Name | 補足コメント | ||
9-13 | Disease_Supplement_Single | 単独補足コメント欄(繰り返し 3) | 追加 (2017-05-25) | |
9-13-1 | Disease_Supplement_Single_Code | 単独補足コメントコード | 追加 (2017-05-25) | |
9-13-2 | Disease_Supplement_Single_Name | 単独補足コメント名称 | 追加 (2017-05-25) | |
9-14 | Disease_Karte_Name | カルテ病名 | ||
9-15 | Disease_Class | 疾患区分 (03:皮膚科特定疾患指導管理料(1)、 04:皮膚科特定疾患指導管理料(2)、 05:特定疾患療養管理料、 07:てんかん指導料、 08:特定疾患療養管理料又はてんかん指導料、 09:難病外来指導管理料) | 05 | |
9-16 | Disease_Receipt_Print | レセプト表示有無(1:表示しない、空白:表示する) | 1 | |
9-17 | Disease_Receipt_Print_Period | レセプト表示期間 | ||
9-18 | Insurance_Disease | 保険病名 (True:保険病名である、False:以外) | False | |
9-19 | Classification_Number_Mater | 分類番号(主) | 追加(2016-04-18) ※2 | |
9-20 | Classification_Number_Servant | 分類番号(従) | 追加(2016-04-18) ※2 | |
9-21 | Discharge_Certificate | 退院証明書 (返却値なしまたは0:記載しない、 1:記載する) | 1 | 追加(2019-05-28) |
※1:システム管理マスタの診療科目情報の診療科コードを参照して下さい。
※2:分類番号(主)と(従)が同一数字(数字2桁)である場合は結合を示します。
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 -*-
#!/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/diseasegetv2?class=01")
# class :01 患者病名情報取得
#
#
BODY = <<EOF
<data>
<disease_inforeq type="record">
<Patient_ID type="string">44444</Patient_ID>
<Base_Date type="string">2012-06-12</Base_Date>
</disease_inforeq>
</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 DiseaseInfo
{
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/diseasegetv2?class=01";
/*
class :01
1.患者番号 Patient_ID (REQUIRED)
2.基準月 Base_Date (IMPLIED)
REQUIRED : 必須 IMPLIED : 任意
*/
string BODY = @"
<data>
<disease_inforeq type=""record"">
<Patient_ID type=""string"">44444</Patient_ID>
<Base_Date type=""string"">2012-06-12</Base_Date>
</disease_inforeq>
</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); } 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 | 患者番号の設定がありません |
10 | 患者番号に該当する患者が存在しません |
11 | 基準日が暦日ではありません |
20 | 対象病名が200件以上存在します |
21 | 対象病名がありません |
89 | 職員情報が取得できません |
医療機関情報が取得できません | |
システム日付が取得できません | |
患者番号構成情報が取得できません | |
グループ医療機関が不整合です。処理を終了して下さい | |
システム項目が設定できません | |
90 | 他端末使用中 |
91 | 処理区分未設定 |
97 | 送信内容に誤りがあります |
98 | 送信内容の読込ができませんでした |
99 | ユーザID未登録 |