(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0010】
以下、図面を参照しながら、実施の形態を説明する。なお、以下の実施の形態において、その構成要素(要素ステップなどを含む)は、特に明示した場合及び原理的に明らかに必須であると考えられる場合などを除き、必ずしも必須のものではない。
【0011】
図1は、電子カルテシステム1の構成例を示すブロック図である。
【0012】
電子カルテシステム1は、サーバ10と、少なくとも1つの端末20とを含む。サーバ10と端末20とは、所定の通信ネットワークで接続されており、双方向通信が可能である。
【0013】
サーバ10は、電子カルテに関する各種データを管理するための装置である。端末20は、医師、看護師、薬剤師及び事務員等の医療関係者が、電子カルテを利用するための装置である。端末20は、例えば、PC、タブレット端末、及びスマートフォン等である。
【0014】
<サーバ10の構成>
次にサーバ10の構成について説明する。サーバ10は、機能として、サーバ制御部100と、サーバ側キャッシュ部102と、DB(DataBase)制御部104と、DB106とを有する。
【0015】
DB106には、電子カルテに関するマスタ及び診療記録等が保持される。DB106は、例えば、HDD(Hard Disk Drive)又はSSD(Solid State Drive)等の記憶装置に構築される。
【0016】
サーバ側キャッシュ部102には、電子カルテに関する最新のマスタデータがキャッシュされる。サーバ側キャッシュ部102は、例えば、DRAM(Dynamic Random Access Memory)等の記憶装置に構築される。サーバ側キャッシュ部102が構築される記憶装置のアクセス速度は、DB106が構築される記憶装置のアクセス速度よりも高速であることが好ましい。
【0017】
電子カルテに関するマスタは、電子カルテへの入力時に選択可能な項目に関する情報を含む。電子カルテに関するマスタは、例えば、ユーザマスタ、カルテ記事雛形マスタ、オーダマスタ、病名マスタ、及び、検査依頼マスタ、検査結果マスタを含む。
【0018】
ユーザマスタは、受診者に関する情報を電子カルテに入力する際に選択可能な項目を含む。例えば、ユーザマスタは、氏名、生年月日、性別、及び血液型等の項目を含む。
【0019】
カルテ記事雛形マスタは、診療記録に関する情報を電子カルテに入力する際に選択可能な項目、例えば、バイタル情報、及びシェーマの画像等の項目を含む。
【0020】
オーダマスタは、処方に関する情報を電子カルテに入力する際に選択可能な項目、例えば、医薬品名、及び検体名等の項目を含む。
【0021】
病名マスタは、病名に関する情報を電子カルテに入力する際に選択可能な項目、例えば、病名等の項目を含む。
【0022】
検査依頼マスタは、検査依頼に関する情報を電子カルテに入力する際に選択可能な項目、例えば、検査名、及び検査対象等の項目を含む。
【0023】
検査結果マスタは、検査結果に関する情報を電子カルテに入力する際に選択可能な項目、例えば、検査名、及び検査分類等の項目を含む。
【0024】
サーバ制御部100は、DB106及びサーバ側キャッシュ部102内のデータを制御する。例えば、サーバ制御部100は、DB106内のマスタデータが更新されると、その更新されたマスタデータをサーバ側キャッシュ部102に反映する。すなわち、サーバ制御部100は、サーバ側キャッシュ部102に、最新のマスタデータが保持されているようにする。
【0025】
また、サーバ制御部100は、端末20からの要求に応じて、必要なデータを端末20に返す。例えば、サーバ制御部100は、端末20から要求電文を受信すると、その要求電文に含まれる検索クエリに適合するマスタデータを、サーバ側キャッシュ部102から取得し、応答電文として端末20へ返す。サーバ側キャッシュ部102はDB106よりも応答性能が高く、サーバ側キャッシュ部102に格納されているデータは、応答電文の形式になっている場合もある。よって、サーバ制御部100は、マスタデータをDB106から取得するよりも、短時間で応答電文を端末20に返すことができる。
【0026】
<端末20の構成>
次に端末20の構成について説明する。端末20は、機能として、モジュール部202と、アプリケーション部200と、キャッシュ制御部204と、端末側キャッシュ部206とを含む。
【0027】
モジュール部202は、端末20側における電子カルテの共通ロジックを含むプログラムモジュールである。モジュール部202は、ライブラリ又はプラグイン等とも呼ばれる。
【0028】
アプリケーション部200は、端末20側から電子カルテを利用するためのアプリケーションプログラムである。アプリケーション部200は、モジュール部202を利用して作成される。このように、電子カルテの共通ロジックをモジュール部202として分離しておくことにより、アプリケーション部200には、端末20の種別(例えばPC又はタブレット端末20等)によって異なる部分のみを実装することができる。これにより、端末20の種別に応じた最適な電子カルテのアプリケーションを、比較的容易に実装することができる。
【0029】
キャッシュ制御部204は、サーバ制御部100と連携して、端末側キャッシュ部206を制御する。例えば、キャッシュ制御部204は、サーバ制御部100から最新のマスタデータを取得して端末側キャッシュ部206に格納することにより、端末側キャッシュ部206のマスタデータを最新に保つ。キャッシュ制御部204とサーバ制御部100との間のやり取りは、サーバ10が公開するWEB APIを用いて行われてもよい。
【0030】
<要求電文及び応答電文の構成>
次に要求電文及び応答電文の構成について説明する。
【0031】
要求電文は、キャッシュ制御部204がサーバ制御部100に対してデータを要求するための電文である。要求電文は、データクエリモードと、確認時刻とを含む。応答電文は、サーバ制御部100がキャッシュ制御部204に対して、要求電文に対する応答を返すための電文である。応答電文は、サーバクエリ時刻と、データとを含む。
【0032】
データクエリモードには、次のように、どのようなデータを要求するかを示すモードを設定可能である。
・全データを要求する「ALL」。
・確認時刻以降に更新されたデータを要求する「Time」。
【0033】
サーバクエリ時刻は、サーバ制御部100がキャッシュ制御部204から要求電文を受信した時刻である。サーバクエリ時刻は、応答電文に含まれて端末20に送信され、端末側キャッシュ部206に格納される。キャッシュ制御部204は、端末側キャッシュ部206からサーバクエリ時刻を取得し、その取得したサーバクエリ時刻を、確認時刻として電文要求に設定する。
【0034】
図2は、要求電文のデータクエリモードに「ALL」が設定された場合の処理を示すシーケンスチャートである。
【0035】
キャッシュ制御部204は、端末側キャッシュ部206から、サーバクエリ時刻を取得する(ST100、ST102)。
【0036】
次に、キャッシュ制御部204は、データクエリモードに「ALL」を、確認時刻に「NULL」を設定して要求電文を生成し、サーバ制御部100へ送信する(ST104)。確認時刻に「NULL」が設定された場合は、全てのマスタデータがクエリ対象となる。
【0037】
サーバ制御部100は、ST104の要求電文を受信する。そして、サーバ制御部100は、この要求電文を受信した時刻から、サーバクエリ時刻を生成する(ST106)。
【0038】
次に、サーバ制御部100は、データクエリモードが「ALL」であるので、サーバ側キャッシュ部102から全マスタデータを取得する(ST108、ST110)。
【0039】
次に、サーバ制御部100は、ST106で生成したサーバクエリ時刻と、ST110で取得した全マスタデータとを含む応答電文を生成し、キャッシュ制御部204に送信(返信)する(ST112)。
【0040】
キャッシュ制御部204は、ST112の応答電文を受信する。そして、キャッシュ制御部204は、この受信した応答電文に含まれるサーバクエリ時刻と全マスタデータとを、端末側キャッシュ部206に格納する(ST114、ST116)。すでに端末側キャッシュ部206にサーバクエリ時刻とマスタデータとが存在する場合、キャッシュ制御部204は、端末側キャッシュ部206のサーバクエリ時刻と全データとを更新する。
【0041】
図2の処理によれば、端末側キャッシュ部206のマスタデータが全て最新となる。この処理は、例えば、端末20の起動時又はアプリケーション部200の起動時に実行される。
【0042】
図3は、要求電文のデータクエリモードに「Time」が設定された場合の処理を示すシーケンスチャートである。
【0043】
キャッシュ制御部204は、端末側キャッシュ部206から、サーバクエリ時刻を取得する(ST150、ST152)。
【0044】
次に、キャッシュ制御部204は、データクエリモードに「Time」を、確認時刻に上記で取得したサーバクエリ時刻を設定した要求電文を生成し、サーバ制御部100へ送信する(ST154)。
【0045】
サーバ制御部100は、ST104の要求電文を受信する。そして、サーバ制御部100は、この要求電文を受信した時刻から、サーバクエリ時刻を生成する(ST156)。
【0046】
次に、サーバ制御部100は、データクエリモードが「Time」であるので、サーバ側キャッシュ部102から、「確認時刻−α<DB更新時刻」のクエリ条件に適合するデータを検索する(ST158、ST160)。αは所定の時間である。ここで、確認時刻から所定時間αを減算しているのは、以下の理由による。
【0047】
もしαを減算しないと、ST156のサーバクエリ生成時刻が、DB106でデータが更新されてからサーバ側キャッシュ部102に格納されるまでの間の時刻であった場合、「最新更新時刻>DB更新時刻」となってしまい、キャッシュ制御部204が、更新データを取得できない事態が発生してしまう。すなわち、αを減算することにより、このような事態の発生を防止することができる。したがって、所定時間αは、DB106でマスタデータが更新されてサーバ側キャッシュ部102に格納されるまでの間の最長時間よりも長い時間となる。なお、「確認時刻−α」は、減算後確認時刻と呼ばれてもよい。
【0048】
<クエリ条件に適合するデータが存在する場合>
まず、ST158のクエリ条件「確認時刻−α<DB更新時刻」に適合するマスタデータがサーバ側キャッシュ部102に存在する場合について説明する。
【0049】
この場合、端末側キャッシュ部206のマスタデータは最新の状態ではない。したがって、サーバ制御部100は、ST156で生成したサーバクエリ時刻と、更新マスタデータが存在する旨を示すフラグ値と、ST160で取得した更新マスタデータとを含む応答電文を生成し、キャッシュ制御部204に送信(返信)する(ST162)。
【0050】
キャッシュ制御部204は、ST162の応答電文を受信する。そして、キャッシュ制御部204は、この受信した応答電文に含まれるサーバクエリ時刻と更新マスタデータとを、端末側キャッシュ部206に格納する(ST164、ST166)。すなわち、端末側キャッシュ部206のサーバクエリ時刻と、端末側キャッシュ部206に格納されているデータのうちサーバ10側で更新されたデータと、を更新する。
【0051】
<クエリ条件に適合するデータが存在しない場合>
次に、ST158のクエリ条件「確認時刻−α<DB更新時刻」に適合するマスタデータがサーバ側キャッシュ部102に存在しない場合について説明する。
【0052】
この場合、端末側キャッシュ部206のマスタデータは最新の状態である。したがって、サーバ制御部100は、ST156で生成したサーバクエリ時刻と、更新マスタデータが存在しない旨を示すフラグ値とを含む応答電文を生成し、キャッシュ制御部204に送信(返信)する(ST162)。
【0053】
キャッシュ制御部204は、ST162の応答電文を受信する。そして、キャッシュ制御部204は、この受信した応答電文に含まれるサーバクエリ時刻を、端末側キャッシュ部206に格納する(ST164、ST166)。
【0054】
図3の処理によれば、サーバ10のDB106におけるマスタデータの更新が、サーバ側キャッシュ部102に反映されるまでの間のタイムラグによって、端末側キャッシュ部206に反映されなくなるおそれを防止することができる。すなわち、サーバ10側におけるデータ更新が確実に端末20に伝わる。なお、
図3の処理は、所定の周期で実行されてよい。
【0055】
また、
図3の処理によれば、サーバ10は、更新されたマスタデータのみを端末20に送信する。これにより、サーバ10と端末20との間の通信量が削減され、さらに、端末20におけるマスタデータの更新量も削減されるので、電子カルテシステム1全体の動作速度が向上する。
【0056】
図4は、要求電文にマスタデータの識別子であるIDが設定された場合の処理を示すシーケンスチャートである。
【0057】
キャッシュ制御部204は、端末側キャッシュ部206から、サーバクエリ時刻を取得する(ST200、ST202)。
【0058】
次に、キャッシュ制御部204は、確認時刻に上記で取得したサーバクエリ時刻を、IDに要求対象のマスタデータのIDを設定して要求電文を生成し、サーバ制御部100へ送信する(ST204)。
【0059】
サーバ制御部100は、ST204の要求電文を受信する。そして、サーバ制御部100は、この要求電文を受信した時刻から、サーバクエリ時刻を生成する(ST206)。
【0060】
次に、サーバ制御部100は、サーバ側キャッシュ部102から、その要求電文に設定されたIDに適合し、かつ、「確認時刻−α<DB更新時刻」に適合するマスタデータを検索する(ST208)。そして、サーバ制御部100は、サーバ側キャッシュ部102から、その検索に適合するマスタデータを取得する(ST210)。ここで、複数のIDが設定されている場合、それらのIDの内の1つでも更新されているならば、サーバ制御部100は、それら全てのIDのデータを取得する。
【0061】
次に、サーバ制御部100は、クエリ条件に適合するデータが存在する場合、ST206で生成したサーバクエリ時刻と、更新データが存在する旨を示すフラグ値と、ST210で取得したマスタデータとを含む応答電文を生成し、キャッシュ制御部204に送信(返信)する(ST212)。なお、更新データが存在しない場合、サーバ制御部100は、上述同様、ST206で生成したサーバクエリ時刻と、更新データが存在しない旨を示すフラグ値とを含む応答電文を生成し、キャッシュ制御部204に送信する。
【0062】
キャッシュ制御部204は、ST212の応答電文を受信する。そして、キャッシュ制御部204は、この受信した応答電文に含まれる更新マスタデータを、端末側キャッシュ部206に格納する(ST214、ST216)。すなわち、端末側キャッシュ部206に格納されているマスタデータのうちサーバ10側で更新されたマスタデータを更新する。
【0063】
なお、ST214において、キャッシュ制御部204は、端末側キャッシュ部206のサーバクエリ時刻を更新しない。なぜなら、端末側キャッシュ部206では、IDに対応するデータのみが更新されるため、もしサーバクエリ時刻を更新してしまうと、他の更新すべきデータが更新されない状態が発生するおそれがあるからである。
【0064】
図4の処理によれば、特定のマスタデータのみを更新することができる。例えば、新たな薬が入荷された際に処方等マスタのみを更新したりすることができる。これにより、サーバ10と端末20との間の通信量が削減され、さらに、端末20におけるマスタデータの更新量も削減されるので、電子カルテシステム1全体の動作速度が向上する。
【0065】
図5は、DBのデータを変更する処理を示すシーケンスチャートである。
【0066】
キャッシュ制御部204は、端末20側の更新データを含む要求電文を生成し、サーバ制御部100へ送信する(ST300)。
【0067】
サーバ制御部100は、ST300の要求電文を受信し、更新データを抽出する。そして、サーバ制御部100は、この更新データの更新要求を、DB制御部104へ送信する(ST302)。
【0068】
DB制御部104は、ST302の更新要求を受信し、更新データを抽出する。そして、DB制御部104は、この更新データをDB106に反映(登録又は更新)する(ST304、ST306)。
【0069】
次に、DB制御部104は、更新要求に対する応答(「更新応答」という)を、サーバ制御部100へ送信(返信)する(ST308)。
【0070】
サーバ制御部100は、ST308の更新応答を受信する。そして、サーバ制御部100は、ST302の更新データをサーバ側キャッシュ部102に反映(登録又は更新)する(ST310、ST312)。これにより、DB106とサーバ側キャッシュ部102の両方に更新データが反映される。
【0071】
次に、サーバ制御部100は、ST300の要求電文に対する応答電文を、キャッシュ制御部204に送信する(ST314)。
【0072】
キャッシュ制御部204は、ST314の応答電文を受信する。そして、キャッシュ制御部204は、ST300の更新データを、端末側キャッシュ部206に反映(登録又は更新)する(ST316、ST318)。これにより、端末側キャッシュ部206にも更新データが反映される。なお、この場合、キャッシュ制御部204は、端末側キャッシュ部206のサーバクエリ時刻を更新しない。
【0073】
図5の処理によれば、端末20による更新データを、サーバ10側のDB106及びサーバ側キャッシュ部102に反映した後に、端末側キャッシュ部206に反映するため、サーバ10と端末20との間に更新データの不整合が発生することを防止することができる。
【0074】
<ハードウェアの構成>
以上、本発明に係る実施形態について図面を参照して詳述してきたが、上述したサーバ10、端末20の機能は、コンピュータプログラムにより実現され得る。
【0075】
図6は、各装置の機能をプログラムにより実現するコンピュータのハードウェア構成を示す図である。このコンピュータ1100は、キーボードやマウス、タッチパッドなどの入力装置1101、ディスプレイやスピーカーなどの出力装置1102、CPU(Central Processing Unit)1103、ROM(Read Only Memory)1104、RAM(Random Access Memory)1105、ハードディスク装置やSSD(Solid State Drive)などの記憶装置1106、DVD−ROM(Digital Versatile Disk Read Only Memory)やUSB(Universal Serial Bus)メモリなどの記録媒体から情報を読み取る読取装置1107、ネットワークを介して通信を行う送受信装置1108を備え、各部はバス1109により接続される。
【0076】
そして、読取装置1107は、上記各装置の機能を実現するためのプログラムを記録した記録媒体からそのプログラムを読み取り、記憶装置1106に記憶させる。あるいは、送受信装置1108が、ネットワークに接続されたサーバ装置と通信を行い、サーバ装置からダウンロードした上記各装置の機能を実現するためのプログラムを記憶装置1106に記憶させる。
【0077】
そして、CPU1103が、記憶装置1106に記憶されたプログラムをRAM1105にコピーし、そのプログラムに含まれる命令をRAM1105から順次読み出して実行することにより、上記各装置の機能が実現される。
【0078】
上述した実施形態は、本発明の説明のための例示であり、本発明の範囲を実施形態にのみ限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなしに、他の様々な態様で本発明を実施することができる。