患者ジャーニーのデータテンプレート
患者ジャーニーのデータテンプレート
- 臨床状況の把握に推奨される属性
- 追跡に必要な主要なプロセスの節目
- Epic EHR向けの具体的な抽出ガイド
患者ジャーニーの属性
| 名前 | 説明 | ||
|---|---|---|---|
| アクティビティ名 ActivityName | 実行された具体的な臨床または事務上のアクションです。 | ||
| 説明 この属性には、患者の受診過程で発生したイベントの名称が記録されます。例として、「患者登録」、「薬剤投与」、「退院指示の署名」などがあります。プロセスフローを定義する中心的な要素です。 分析では、この項目がプロセスマップのノードになります。EHR内のさまざまなトランザクションコードやオーダーのステータスから生成され、人が読みやすいイベントログを作成します。 重要な理由 プロセスの手順を定義し、ワークフローを可視化できます。 入手先 CLARITY_ADT、ORDER_PROC、ORDER_MEDテーブルから生成されます。 例 トリアージ完了診断検査をオーダー患者様が退院投薬を実施 | |||
| イベント発生日時 EventTimestamp | アクティビティが発生した正確な日時です。 | ||
| 説明 この属性には、Epicシステムにイベントが記録された正確な時点が保存されます。アクティビティの順序付けや、在院日数、サイクルタイムなど、時間に基づくすべての指標の計算に使われます。 ボトルネックを特定するには、この項目の正確性が欠かせません。開始点と終了点の時間情報を提供し、トリアージ処理量や確定診断までの時間に関するダッシュボードを支えます。 重要な理由 サイクルタイム、リードタイム、プロセスの順序を計算できます。 入手先 ソーステーブルに応じた各種のタイムスタンプ列(例:EFFECTIVE_TIME、ORDER_TIME)です。 例 2023-10-15T08:30:00Z2023-10-15T09:15:22Z2023-10-16T14:20:00Z | |||
| 患者エピソード PatientEpisodeId | 特定の患者の受診または診療エピソードを識別する一意の識別子です。 | ||
| 説明 患者エピソードは、プロセスマイニングにおける主要なケース識別子です。入院や救急外来の受診など、継続する一つの診療期間に関連する臨床、事務、物流上のすべてのイベントをまとめます。Epic Clarityでは、通常、Contact Serial Number(CSN)またはEncounter IDに対応します。 この属性を分析すると、患者の受診から退院までの一連の流れを再構成できます。トリアージ、診断、治療、退院に関するアクティビティを、一貫した一つのプロセスインスタンスとして関連付けられます。 重要な理由 異なるイベントを一つのプロセスケースに関連付けるための基本キーです。 入手先 Epic Clarityテーブル:PAT_ENC、列:PAT_ENC_CSN_ID 例 200459112200459113200459114200459115 | |||
| ソースシステム SourceSystem | データの正式な記録元となるシステムで、通常はEpic EHRです。 | ||
| 説明 この属性は、データの発生元を識別します。このビューでは主に「Epic EHR」ですが、別のLIS(検査情報システム)や請求システムなど、他のシステムとデータを統合する場合にも役立ちます。 分析ではデータの系譜を確認でき、ソースと比較して特定のイベントが欠落している場合や形式が正しくない場合のトラブルシューティングにも役立ちます。 重要な理由 データの発生元を追跡し、その背景を確認できます。 入手先 接続文字列の設定にハードコードされているか、そこから生成されます。 例 Epic EHREpic ClarityEpic Caboodle | |||
| 最終データ更新日時 LastDataUpdate | データが抽出された日時、または最後に更新された日時です。 | ||
| 説明 この属性は、ETLパイプラインでレコードが最後に処理された日時を示します。イベント発生日時とは異なり、データの鮮度を監視するために使われます。 分析担当者は、この項目を使って、ダッシュボードがリアルタイムの状況を反映しているか、またはトリアージ待ち時間などのKPIの正確性に影響するデータ遅延が発生しているかを確認できます。 重要な理由 プロセスマイニングのデータが最新で信頼できる状態かを評価できます。 入手先 ETLシステムのタイムスタンプです。 例 2023-10-27T23:59:59Z2023-10-28T06:00:00Z | |||
| イベント終了時刻 EventEndTime | アクティビティが完了した日時です。 | ||
| 説明 多くのイベントは瞬時に発生しますが、「診断検査の実施」や「診察の完了」など、所要時間を伴うアクティビティもあります。この属性には、その完了時刻が記録されます。 実作業時間と待ち時間を分けて計算できます。診断サービスのサイクルタイムに関するダッシュボードで特に役立ちます。 重要な理由 アクティビティの所要時間とリソースの利用状況を計算できます。 入手先 ORDER_PROCの具体的な終了時刻列については、Epic EHRのドキュメントを参照してください。 例 2023-10-15T09:45:00Z2023-10-16T15:00:00Z | |||
| トリアージ緊急度レベル TriageAcuityLevel | トリアージ時に患者へ割り当てられた重症度スコアです。 | ||
| 説明 この属性は、患者の状態の緊急度を示します。通常はESIレベル1~5などの尺度で表され、「トリアージ完了」アクティビティで記録されます。 重症度スコア別のリソース負荷ダッシュボードで、ケースを分けて分析するために使われます。緊急度の高い患者と低い患者ではプロセスの経路が異なるため、この項目によってその違いを識別できます。 重要な理由 緊急度と予想されるリソース消費量に基づいてプロセスを分けます。 入手先 EDログのAcuity項目については、Epic EHRのドキュメントを参照してください。 例 1 - 蘇生2 - 緊急3 - 至急 | |||
| 主診断コード PrimaryDiagnosisCode | 主な診断を表すICD-10コードまたは院内コードです。 | ||
| 説明 この属性には、患者の確定した病状が記録されます。通常は「診断確定」アクティビティで入力されます。 臨床プロトコルのコンプライアンスビューで、病状別にケースをグループ化するために使われます。「Product」にマッピングすると、病状によって診療の進み方がどのように異なるかを分析できます。 重要な理由 臨床的な類似性に基づいてケースをまとめ、プロトコルを分析できます。 入手先 Epic Clarityテーブル:PAT_ENC_DX、列:DX_ID 例 J18.9I21.9E11.9 | |||
| 再入院フラグ ReadmissionFlag | 患者が30日以内に予期せず再受診したかを示します。 | ||
| 説明 このブール型属性は、特定のエピソードの後、同じ患者が30日以内に予定外の入院をしたかを示します。30日以内の予定外再入院率KPIの中核となる項目です。 分析では主要な結果変数として扱います。値が「True」となったケースに至るプロセス経路を分析し、退院計画段階の根本原因を特定します。 重要な理由 退院プロセスの不備とケアの質に関する問題を特定します。 入手先 同じMRNの将来の受診記録を参照するSQLで計算されます。 例 truefalse | |||
| 受診種別 EncounterType | 患者の受診区分です(例:入院、救急)。 | ||
| 説明 この属性は、患者エピソードの種類を分類します。一般的な値には、「救急」、「入院」、「外来」、「オンライン」などがあります。 この項目を「CaseType」にマッピングすると、分析を条件で絞り込めます。たとえば、退院計画ダッシュボードは主に入院の受診を対象とし、トリアージは救急の受診に限定されます。 重要な理由 プロセスインスタンスの大まかな背景を示します。 入手先 Epic Clarityテーブル:PAT_ENC、列:ENC_TYPE_C 例 緊急病院外来入院 | |||
| 患者MRN PatientMrn | 患者を識別する診療記録番号です。 | ||
| 説明 MRNは、エピソードIDとは異なり、医療システム全体で患者を識別する一意のIDです。複数回の受診にまたがって患者の履歴を追跡できます。 再入院を検出し、再入院リスクダッシュボードで別々のエピソードを関連付けるために使われます。汎用モデルでは「Customer」にマッピングされます。 重要な理由 再受診の特定と患者の履歴分析に欠かせません。 入手先 Epic Clarityテーブル:PATIENT、列:PAT_IDまたはPAT_MRN_ID 例 MRN-882910MRN-112003MRN-554211 | |||
| 提供者ID ProviderId | アクティビティを実行したユーザーまたは医療従事者の識別子です。 | ||
| 説明 この属性には、イベントを担当した職員の一意のIDが記録されます。例として、薬剤を投与した看護師や退院指示に署名した医師などがあります。 汎用属性の「User」にマッピングし、担当者によるばらつきや業務量を分析します。自動化されたアクティビティでは、システムユーザーIDになる場合があります。 重要な理由 職員間のパフォーマンスと業務量のばらつきを分析できます。 入手先 Epic Clarityテーブル:CLARITY_EMP、列:USER_ID 例 EMP10023DOC5592SYSTEM | |||
| 退院先区分 DischargeDisposition | 退院時の患者の行き先です(自宅、熟練看護施設、死亡)。 | ||
| 説明 この属性には、患者が退院後に向かった場所が記録されます。「患者退院」アクティビティで取得されます。 熟練看護施設(SNF)へ退院した患者は自宅へ退院した患者と再入院の傾向が異なるため、再入院リスクダッシュボードで重要な項目です。 重要な理由 ケアプロセスの結果を背景情報とともに把握できます。 入手先 Epic Clarityテーブル:PAT_ENC、列:DISCH_DISP_C 例 自宅熟練看護施設在宅医療 | |||
| 部門名 DepartmentName | アクティビティが行われた病院の病棟または部門です。 | ||
| 説明 この属性は、イベントが発生した機能上の場所を識別します。例として、「救急部門」、「放射線科」、「一般外科病棟」などがあります。院内病棟間転送分析に欠かせない項目です。 データを使って部門別にプロセスマップを分けることで、管理者は自部門に固有のボトルネックと、病院全体に共通する問題を切り分けられます。 重要な理由 組織別のフィルタリングと引き継ぎの分析が可能になります。 入手先 Epic Clarityテーブル:CLARITY_DEP、列:DEPARTMENT_NAME 例 救急部門放射線科ICU小児科 | |||
| オーダー担当者の専門分野 OrderingProviderSpecialty | 診察または検査を依頼した医師の専門分野です。 | ||
| 説明 この属性には、オーダー担当者の部門または専門分野が記録されます(例:「循環器科」、「腫瘍科」)。専門医コンサルテーションの待ち時間ダッシュボードで使われます。 特定の専門分野が他の専門分野より院内サービスの待ち時間が長いかを分析し、特定の診療領域における偏りやリソース不足を明らかにできます。 重要な理由 診断サービスとコンサルテーションサービスへの需要を分けて分析します。 入手先 提供者マスターデータについては、Epic EHRのドキュメントを参照してください。 例 循環器科内科整形外科 | |||
| プロトコル遵守状況 ProtocolAdherenceStatus | ケースが標準的な臨床経路に従ったかを示すステータスです。 | ||
| 説明 この属性は、ケース内のアクティビティの順序を、定義済みの参照モデル(標準業務手順)と比較します。臨床プロトコルのコンプライアンスビューを支えます。 値には、「遵守」、「手順のスキップ」、「順序不一致」などがあります。すべてのプロセスマップを手作業で確認しなくても、コンプライアンス違反のケースをすばやく絞り込めます。 重要な理由 エビデンスに基づくケア基準からの逸脱をすばやく特定します。 入手先 プロセスマイニングツール内で計算するか、SQLで事前処理します。 例 コンプライアンス遵守逸脱未完了 | |||
| 予約の自動化有無 IsAutomatedScheduling | 職員の介入なしに予約が行われたかを示すフラグです。 | ||
| 説明 このブール型属性は、予約方法から生成されます。MyChartまたは自動化されたCadenceワークフローで予約された場合は、Trueになります。 フォローアップ予約自動化率KPIを直接支えます。管理業務のどの程度をテクノロジーに移管できているかを、業務責任者が把握できます。 重要な理由 プロセス自動化の成果を測定します。 入手先 SchedulingMethodから生成されます。 例 truefalse | |||
| 予約方法 SchedulingMethod | フォローアップ予約をどのように取得したかを示します。 | ||
| 説明 この属性には、予約に使われたチャネルが記録されます。例として、「MyChart」、「Cadence Auto」、「受付」などがあります。外来フォローアップ自動化状況ダッシュボードで重要な項目です。 システムまたは患者主導のデジタルチャネルを示す値の場合、「IsAutomated」フラグをtrueに設定できます。デジタル化施策の成果を確認するのに役立ちます。 重要な理由 自動化ツールやセルフサービスツールの利用状況を追跡できます。 入手先 予約作成元については、Epic EHRのドキュメントを参照してください。 例 MyChartCadence電話対面 | |||
| 地域名 RegionName | 地理的な地域または病院キャンパスです。 | ||
| 説明 複数のキャンパスを持つ医療システムでは、この属性が施設の所在地を識別します。病院拠点間でパフォーマンスを比較できます。 「Region」にマッピングすると、複数拠点のベンチマークが可能になり、どの病院がトリアージ処理量をより適切に管理しているかを比較できます。 重要な理由 医療ネットワーク内の異なる施設間でベンチマークを実施できます。 入手先 部門または施設のマスターデータから生成されます。 例 北キャンパスシティセンター西棟 | |||
| 診断オーダー費用 DiagnosticOrderCost | 診断検査または処置にかかる院内費用です。 | ||
| 説明 この属性は、「診断検査の実施」アクティビティに金額を割り当てます。プロセスマップに財務情報を重ねて表示できます。 主要な臨床指標ではありませんが、特に重症度スコアが高く、多くのリソースを必要とするプロセスの経路について、管理部門が財務上の影響を把握するのに役立ちます。 重要な理由 プロセス効率の分析に財務面の視点を加えます。 入手先 処置に関連付けられた請求または原価計算のテーブルです。 例 150.001200.0045.00 | |||
| 転送待ち時間 TransferWaitDuration | 転送指示から実際の転送までに経過した時間です。 | ||
| 説明 この指標は、「転送指示」と「患者転送」の間隔を測定します。院内病棟間転送分析の主要なデータ項目です。 値が大きい場合は、患者が病床を待つ「ボーディング」が発生していることを示し、救急部門から先の流れを妨げます。 重要な理由 患者の流れにおける物流上および収容能力上のボトルネックを明らかにします。 入手先 指示イベントと転送イベントのタイムスタンプの差として計算されます。 例 2時間30分45分12時間 | |||
患者ジャーニーのアクティビティ
| アクティビティ | 説明 | ||
|---|---|---|---|
| トリアージ完了 | 初回の看護評価またはトリアージ評価が完了した時点です。通常は、トリアージのフローシートが確定されたとき、またはトリアージのステータスが「Complete」に変更されたときに記録されます。 | ||
| 重要な理由 「トリアージ処理能力と待ち時間」ダッシュボードで受付段階の効率を測定するために欠かせません。ここでの遅延は、ケア経路全体に波及します。 入手先 PAT_ENC_HSP.TRIAGE_END_TIME、または特定のフローシート行が確定された時刻(FLO_MEASUREMENT)。 取得 トリアージ記録への署名、またはステータス項目の更新時に記録されます。 イベントタイプ explicit | |||
| 患者様が退院 | 入院の受診記録を正式に終了した時点です。Census上で患者様が退院した際に記録されます。 | ||
| 重要な理由 在院日数の計算におけるエピソードの正式な終了点です。「患者様のフローのバリアントディスカバリー」に欠かせません。 入手先 ADT Feed(Event A03)、またはPAT_ENC_HSP.DISCH_TIME。 取得 事務スタッフが退院ワークフローを完了した際に記録されます。 イベントタイプ explicit | |||
| 患者様の登録完了 | システム上で患者様の受診記録が初めて作成され、ケアエピソードが始まる時点です。患者様が受付または救急部門に到着し、Epicで受付処理を完了した際に明示的に記録されます。 | ||
| 重要な理由 患者様の経過全体の基準点となり、在院日数全体の計算を可能にします。「トリアージ処理能力と待ち時間」ダッシュボードに欠かせないイベントです。 入手先 ADT Feed(Event A04またはA01)、またはClarityテーブルPAT_ENC(HSP_ACCOUNT_IDの作成)。 取得 「Check In」または「Admit」のトランザクションが実行された際に記録されます。 イベントタイプ explicit | |||
| 診断確定 | 患者様の問題リストまたは受診の診断項目に確定診断を入力した時点です。調査フェーズの終了を示します。 | ||
| 重要な理由 「確定診断までの時間」KPIに必要です。評価から対象を絞った治療へ移行する時点を示します。 入手先 受診に関連付けられたPAT_ENC_DXテーブルまたはPROBLEM_LISTの更新。 取得 臨床医がEncounter Diagnosisアクティビティに項目を追加した際に記録されます。 イベントタイプ explicit | |||
| ケア計画を開始 | 患者様に特定の臨床経路またはプロトコルを割り当てることです。標準のOrder SetまたはCare Planが受診コンテキストに適用された際に記録されます。 | ||
| 重要な理由 「臨床プロトコル遵守ビュー」で、標準的なケアに沿う意図を示します。その後に予定された手順からの逸脱を、この時点から測定できます。 入手先 プロトコルが受診に関連付けられたことを示すORDER_SET_BKGまたはケア計画のテーブル。 取得 臨床医がOrder Setを選択して署名した際に記録されます。 イベントタイプ explicit | |||
| コンサルテーションを依頼 | 専門医に患者様の評価を依頼するオーダーです。Epic内の特定の手順オーダー種別「Consult」として記録されます。 | ||
| 重要な理由 「専門医コンサルテーションのリードタイム」KPIの開始点です。特定の診療科における人員不足の特定に役立ちます。 入手先 ORDER_CLASSが「Consult」であるORDER_PROC、または特定の紹介オーダー。 取得 コンサルテーションのオーダーに署名した際に記録されます。 イベントタイプ explicit | |||
| コンサルテーション完了 | 専門医による評価が完了した時点です。通常は、Consult Noteに署名したとき、またはコンサルテーションのオーダーを終了したときに記録されます。 | ||
| 重要な理由 「専門医コンサルテーションのリードタイム」の終了点です。専門医の助言が提供され、ケア計画を進められる状態を示します。 入手先 HNO_NOTE_TEXT(種別がConsultの記録)、またはORDER_PROCのステータスがCompletedに変更された時点。 取得 Consult Noteの作成時刻、またはオーダーのステータス更新から推定されます。 イベントタイプ inferred | |||
| フォローアップ予約を設定 | 患者様の将来の外来受診を予約することです。患者様の記録に関連付けられたCadenceのスケジューリングモジュールに記録されます。 | ||
| 重要な理由 「フォローアップ予約の自動化率」を支援します。ケアの継続性を確保し、再入院の防止に役立ちます。 入手先 患者様IDに関連付けられ、退院時刻の近くに作成されたPAT_ENC_APPT。 取得 Cadenceで予約枠が確定した際に記録されます。 イベントタイプ explicit | |||
| 患者様を移送 | 患者様を新しい部門または病棟へ実際に移動させることです。ADTの移送イベントを通じて記録されます。 | ||
| 重要な理由 「病棟間移送の平均時間」の終了点です。「院内病棟移送分析」により、病院の物流におけるボトルネックを特定できます。 入手先 ADT Feed(Event A02)、またはPAT_ENC_HSP_TRANSACTION(Transfer In)。 取得 病棟事務担当者がCensus上の患者様の場所を更新した際に記録されます。 イベントタイプ explicit | |||
| 投薬を実施 | 看護師または医療従事者が患者様に薬剤を投与する行為です。Medication Administration Record(MAR)に記録されます。 | ||
| 重要な理由 「投薬パフォーマンス」ダッシュボードの中核イベントです。「治療計画の策定」への遵守状況を追跡します。 入手先 MAR_ADMIN_INFOテーブル。actionが「Given」または「New Bag」であるイベント。 取得 看護師が患者様のリストバンドと薬剤をスキャンした際に記録されます(BCMA)。 イベントタイプ explicit | |||
| 移送をオーダー | 患者様を別の病棟またはケアレベルへ移す依頼です。システム上の「Bed Request」または「Transfer Order」として記録されます。 | ||
| 重要な理由 「病棟間移送の平均時間」の開始点です。移送を決めた臨床上の判断と、病床の空き状況による物流上の対応を区別できます。 入手先 ADT_TRANSFER_ORDERまたはORDER_PROC(Bed Request)。 取得 医師が移送オーダーを入力した際に記録されます。 イベントタイプ explicit | |||
| 診断検査をオーダー | 画像診断(Radiology)または検査サービスのオーダーを入力した時点です。医師がCPOEシステムでオーダーを入力し、署名した際に記録されます。 | ||
| 重要な理由 「診断サービスのサイクルタイム」ダッシュボードの開始点です。ここでの件数が多いにもかかわらず結果が対応していない場合、ボトルネックが存在する可能性があります。 入手先 ORDER_TYPEがLabまたはImaging/RadiologyであるORDER_PROCテーブル。 取得 オーダーのステータスが「Signed」または「Active」になった際に記録されます。 イベントタイプ explicit | |||
| 診断検査を実施 | 診断検査を実際に実施した時点、または結果を確定した時点です。検査では検体が処理された時点、画像診断ではスキャンが完了した時点を指します。 | ||
| 重要な理由 「診断検査の平均サイクルタイム」KPIの終了点です。臨床意思決定支援サービスの遅延を把握するために重要です。 入手先 ORDER_PROC.PROC_END_TIME、またはステータスが「Completed」または「Resulted」に変わった際のORDER_STAT_HISTORY。 取得 技師がタスクを完了した際、または結果インターフェースがデータを受信した際に記録されます。 イベントタイプ explicit | |||
| 退院オーダーに署名 | 患者様の退院を医師が正式に承認したことです。Epic内の特定のオーダー入力として記録されます。 | ||
| 重要な理由 「退院計画と実行」における重要なマイルストーンです。この時点から実際の退院までの間隔が、事務処理上の遅れを示します。 入手先 種別が「Discharge Patient」であるORDER_PROC。 取得 医師が退院オーダーに署名した際に記録されます。 イベントタイプ explicit | |||
| 退院計画を開始 | 患者様の退院に向けた準備活動を開始した時点です。ケースマネジメントの記録、または特定の「Discharge」オーダー種別を通じて記録されます。 | ||
| 重要な理由 「退院計画と実行」ダッシュボードの重要なイベントです。早期の開始は、在院日数の短縮と相関します。 入手先 HSP_DISCH_PLANの作成、またはケースマネージャー/ソーシャルワーカーによる最初の記録。 取得 Discharge Navigatorとの最初のやり取り、またはCase Mgmtの記録から推定されます。 イベントタイプ inferred | |||
抽出ガイド
ステップ
- Epic Hyperspaceへのログイン後、AnalyticsまたはMy ReportsアクティビティからReporting Workbench(RWB)を起動します。
- 新しいレポートの作成:Libraryタブを選択し、**「Encounter Search」または「Patient Encounters」**テンプレートを検索します。このテンプレートを使うと、CSN(Contact Serial Number)で識別されたコンタクト単位の詳細を取得できます。
- 条件の設定(Settingsタブ):
- 完了したエピソードを取得するため、Date Range(例:Discharge Date = Last 90 Days)を設定します。
- Encounter Type(例:「Hospital Encounter」、「Emergency」)で絞り込み、関係のない外来受診を除外します。
- 特定の範囲が必要な場合は、部門またはFacilityで絞り込みます。
- 表示列の設定(Displayタブ):
- ここが重要な抽出手順です。必要なアクティビティのタイムスタンプに対応する特定の列を検索して追加します。
- 患者識別子を追加します:
CSN(患者エピソード)、MRN(患者ID)。 - 人口統計情報/属性を追加します:
部門、Discharge Disposition、Primary Diagnosis Code、Provider。 - タイムスタンプ列を追加します:
Admission Time、Triage End Time、Discharge Time、Discharge Order Time、First Med Admin Timeなどの列を検索します(正確な対応付けについては、クエリ/設定セクションを参照してください)。
- レポートを実行し、プレビュー画面で結果を確認します。
- データのエクスポート:
- Toolbar > Exportをクリックします。
- CSVまたは**Text (Tab Delimited)**形式を選択します。
- 「Include Column Headers」にチェックが入っていることを確認します。
- ファイルを
Raw_Epic_Extract.csvとして保存します。
- データ変換(重要):
- RWBのエクスポートでは、複数のタイムスタンプ列を持つ患者エピソード1件につき1行の「横持ち」データが生成されます。
- 各タイムスタンプ列がイベントログの個別の行になるよう、データをUnpivot(再構成)する必要があります。
PatientEpisodeId、ActivityName、EventTimestampおよび対応付けた属性を列に持つ最終ファイルを作成します。
- 日付の形式設定:
EventTimestampがProcessMindと互換性のあるISO形式(YYYY-MM-DD HH:MM:SS)になっていることを確認します。 - 最終検証:ファイルに
PatientEpisodeId、ActivityName、EventTimestampの見出しがあることを確認し、ProcessMindにアップロードします。
設定
- テンプレート:Epicのバージョンに応じて、「Encounter Search」(LBF)または「Find Patients」を使用します。
- 日付範囲:まずは3~6か月に限定し、タイムアウトエラーを避けます(RWBは大規模な一括抽出向けに最適化されていません)。
- 行数制限:Epic RWBには、多くの場合、行数制限があります(例:25,000行または50,000行)。日付範囲が上限を超えないようにするか、複数回に分けて実行します。
- 権限:Reporting Workbenchの「Create」および「Export」のセキュリティポイントが必要です。
- パフォーマンス:過去の期間を広く検索する場合は、利用の少ない時間帯に実行します。
- 粒度:この方法で取得できるのは、エンカウンターレベルの概要タイムスタンプ(例:「First Med Admin」)です。特定の「Audit」テンプレートを使わない限り、すべての反復処置(例:投薬1回ごとの記録)は抽出できません。この用途でAuditテンプレートが使われることはまれです。
a サンプルクエリ sql
[REPORT CONFIGURATION SPECIFICATION]
# GENERAL SETTINGS
Application: Epic Reporting Workbench
Template_ID: Encounter_Search_LBF
Time_Horizon: Discharge Date between [Start Date] and [End Date]
Filters: Encounter Type IN ('Hospital Encounter', 'Emergency')
# COLUMN SELECTION MAPPING
# Map the following Epic RWB Columns (Display Names) to the Output Activities.
# Note: Column names may vary slightly by Epic customized build.
[MANDATORY ATTRIBUTES]
Column: Contact Serial Number (CSN) -> Target: PatientEpisodeId
Column: Patient MRN -> Target: PatientMrn
Column: Department at Discharge -> Target: DepartmentName
Column: Discharge Disposition -> Target: DischargeDisposition
Column: Primary Diagnosis ICD-10 -> Target: PrimaryDiagnosisCode
Column: Attending Provider -> Target: ProviderId
Column: Current Date -> Target: LastDataUpdate
Column: System Name (Fixed 'Epic') -> Target: SourceSystem
[ACTIVITY TIMESTAMP MAPPING]
# These columns represent the 'EventTimestamp' for the specific 'ActivityName'
1. Activity: Patient Registered
Epic_Column: Hospital Admission Time OR Check-In Time
2. Activity: Triage Completed
Epic_Column: Triage End Time OR Triage Acuity Time
3. Activity: Care Plan Initiated
Epic_Column: Care Plan Start Date
4. Activity: Diagnostic Test Ordered
Epic_Column: First Lab Order Time OR First Imaging Order Time
(Note: Select 'Earliest' if multiple columns exist)
5. Activity: Diagnostic Test Performed
Epic_Column: First Lab Result Time OR First Imaging End Time
6. Activity: Diagnosis Confirmed
Epic_Column: Principal Diagnosis Problem List Date
7. Activity: Consultation Requested
Epic_Column: Consult Order Create Time
8. Activity: Consultation Completed
Epic_Column: Consult Complete Time
9. Activity: Medication Administered
Epic_Column: First Medication Administration Time
10. Activity: Transfer Ordered
Epic_Column: Transfer Order Time
11. Activity: Patient Transferred
Epic_Column: Last Transfer In Time OR ADT Event Time
12. Activity: Discharge Planning Initiated
Epic_Column: Case Management Start Date
13. Activity: Discharge Order Signed
Epic_Column: Discharge Order Time
14. Activity: Patient Discharged
Epic_Column: Hospital Discharge Time
15. Activity: Follow-up Appointment Scheduled
Epic_Column: Discharge Follow-Up Appointment Made Date
# TRANSFORMATION LOGIC (PSEUDO-CODE)
# The export will be 'Wide'. Apply this logic to create the Event Log:
FOR EACH Row IN Exported_CSV:
EpisodeID = Row['Contact Serial Number']
FUNCTION CreateEvent(ActivityName, TimestampColumn):
IF Row[TimestampColumn] IS NOT NULL:
OUTPUT_ROW = {
'PatientEpisodeId': EpisodeID,
'ActivityName': ActivityName,
'EventTimestamp': Row[TimestampColumn],
'PatientMrn': Row['Patient MRN'],
'DepartmentName': Row['Department at Discharge'],
... [All Attributes]
}
APPEND OUTPUT_ROW TO Event_Log
# Execute for all 15 mappings defined above
CreateEvent('Patient Registered', 'Hospital Admission Time')
CreateEvent('Triage Completed', 'Triage End Time')
... [Repeat for all mapped columns]
END LOOP ステップ
データベースアクセスを申請します。Epic Clarity Console、またはClarityの本番データベースもしくはレポートデータベースに接続したSQLクライアントへの読み取りアクセスを確保します。
PAT_ENC、ORDER_PROC、CLARITY_ADT、MAR_ADMIN_INFOおよび関連する参照テーブルへの権限が必要です。対象範囲とフィルターIDを特定します。完全なスクリプトを実行する前に、検査、放射線、コンサルテーション、転送に該当する
ORDER_TYPE_Cの値を特定する小規模な確認クエリを実行します。これらのカスタムリスト(カテゴリリスト)は病院ごとに異なります。期間を設定します。提供されたSQLスクリプトで
CONTACT_DATEまたはHOSP_ADMSN_TIMEを絞り込んでいるWHERE句を確認します。希望する抽出期間(例:過去6か月)に合わせて調整します。カスタムフローシートをマッピングします(任意)。メインのエンカウンターテーブルにないトリアージや退院計画の正確なタイムスタンプが必要な場合は、該当項目の
FLO_MEAS_ID(フローシート測定ID)を特定し、スクリプトのプレースホルダー部分を更新します。クエリを実行します。SQLクライアント(例:SQL Server Management Studio、Oracle SQL Developer)で完全なSQLスクリプトを実行します。スクリプトは
UNION ALLを使って、異なる臨床イベントを単一の標準化されたイベントログ構造にまとめます。後処理を行います。クエリの結果はフラットな一覧です。
EventTimestampがNULLでないことを確認します。ミドルウェアで必要な場合は、データベース固有の日時形式をISO 8601(YYYY-MM-DDTHH:MM:SS)に変換します。データをエクスポートします。結果セットをCSVファイルとして保存します。ヘッダーが指定された属性(
PatientEpisodeId、ActivityNameなど)と一致していることを確認します。ProcessMindにアップロードします。CSVをProcessMindにインポートし、
PatientEpisodeIdをCase ID、ActivityNameをActivity、EventTimestampをTimestampとしてマッピングします。
設定
- データベース接続:Epic Clarity(通常はMSSQLまたはOracleのバックエンド)。
- 日付による絞り込み:
PAT_ENC.HOSP_ADMSN_TIMEまたはPAT_ENC.CONTACT_DATEで絞り込みます。クエリの処理性能を保つため、初期分析では3~6か月の範囲を推奨します。 - エンカウンタータイプ:スクリプトは入院および救急のエンカウンター(一般的には
ENC_TYPE_Cの値3と50)を対象にしますが、ZC_ENC_TYPEで確認してください。 - オーダータイプ:検査、画像診断、コンサルテーションに該当する
ORDER_TYPE_Cの値は、各施設のZC_ORDER_TYPE設定に応じたカスタマイズが必要です。 - パフォーマンス:スクリプトは大量のデータを持つテーブル(
ORDER_PROC、CLARITY_ADT)をスキャンします。適切なインデックスを使用するか、利用の少ない時間帯に実行してください。
a サンプルクエリ sql
WITH Cohort AS (
SELECT
pe.PAT_ENC_CSN_ID,
pe.PAT_ID,
pe.HOSP_ADMSN_TIME,
pe.HOSP_DISCH_TIME,
pe.DEPARTMENT_ID,
dep.DEPARTMENT_NAME,
emp.NAME AS ProviderName,
pat.PAT_MRN_ID,
pe.ACUITY_LEVEL_C,
disch.NAME AS DischargeDisposition,
pe.ENC_TYPE_C
FROM PAT_ENC pe
LEFT JOIN CLARITY_DEP dep ON pe.DEPARTMENT_ID = dep.DEPARTMENT_ID
LEFT JOIN CLARITY_EMP emp ON pe.VISIT_PROV_ID = emp.PROV_ID
LEFT JOIN PATIENT pat ON pe.PAT_ID = pat.PAT_ID
LEFT JOIN ZC_DISCH_DISP disch ON pe.DISCH_DISP_C = disch.DISCH_DISP_C
WHERE pe.HOSP_ADMSN_TIME >= DATEADD(month, -6, GETDATE())
AND pe.ENC_TYPE_C IN (3, 50) -- 3=Inpatient, 50=Emergency (Verify local codes)
)
-- 1. Patient Registered
SELECT
CAST(c.PAT_ENC_CSN_ID AS VARCHAR(50)) AS PatientEpisodeId,
'Patient Registered' AS ActivityName,
c.HOSP_ADMSN_TIME AS EventTimestamp,
c.DepartmentName,
c.ProviderName AS ProviderId,
c.PAT_MRN_ID AS PatientMrn,
CAST(c.ACUITY_LEVEL_C AS VARCHAR(50)) AS TriageAcuityLevel,
CAST(c.ENC_TYPE_C AS VARCHAR(50)) AS EncounterType,
NULL AS PrimaryDiagnosisCode,
NULL AS ReadmissionFlag,
c.DischargeDisposition,
'Epic EHR' AS SourceSystem,
GETDATE() AS LastDataUpdate
FROM Cohort c
WHERE c.HOSP_ADMSN_TIME IS NOT NULL
UNION ALL
-- 2. Triage Completed (Using Flowsheet or Triage Time)
SELECT
CAST(c.PAT_ENC_CSN_ID AS VARCHAR(50)),
'Triage Completed',
ISNULL(pe.TRIAGE_END_INSTANT, c.HOSP_ADMSN_TIME), -- Fallback if specific column unused
c.DepartmentName,
c.ProviderName,
c.PAT_MRN_ID,
CAST(c.ACUITY_LEVEL_C AS VARCHAR(50)),
CAST(c.ENC_TYPE_C AS VARCHAR(50)),
NULL,
NULL,
c.DischargeDisposition,
'Epic EHR',
GETDATE()
FROM Cohort c
JOIN PAT_ENC pe ON c.PAT_ENC_CSN_ID = pe.PAT_ENC_CSN_ID
WHERE pe.TRIAGE_END_INSTANT IS NOT NULL
UNION ALL
-- 3. Care Plan Initiated (Based on Order Type)
SELECT
CAST(c.PAT_ENC_CSN_ID AS VARCHAR(50)),
'Care Plan Initiated',
ord.ORDER_INST,
c.DepartmentName,
emp.NAME,
c.PAT_MRN_ID,
CAST(c.ACUITY_LEVEL_C AS VARCHAR(50)),
CAST(c.ENC_TYPE_C AS VARCHAR(50)),
NULL,
NULL,
c.DischargeDisposition,
'Epic EHR',
GETDATE()
FROM Cohort c
JOIN ORDER_PROC ord ON c.PAT_ENC_CSN_ID = ord.PAT_ENC_CSN_ID
LEFT JOIN CLARITY_EMP emp ON ord.ORDERING_PROV_ID = emp.PROV_ID
WHERE ord.ORDER_TYPE_C = 100 -- Placeholder: Replace with ID for Care Plan/Protocol
UNION ALL
-- 4. Diagnostic Test Ordered (Lab/Radiology)
SELECT
CAST(c.PAT_ENC_CSN_ID AS VARCHAR(50)),
'Diagnostic Test Ordered',
ord.ORDER_INST,
c.DepartmentName,
emp.NAME,
c.PAT_MRN_ID,
CAST(c.ACUITY_LEVEL_C AS VARCHAR(50)),
CAST(c.ENC_TYPE_C AS VARCHAR(50)),
NULL,
NULL,
c.DischargeDisposition,
'Epic EHR',
GETDATE()
FROM Cohort c
JOIN ORDER_PROC ord ON c.PAT_ENC_CSN_ID = ord.PAT_ENC_CSN_ID
LEFT JOIN CLARITY_EMP emp ON ord.ORDERING_PROV_ID = emp.PROV_ID
WHERE ord.ORDER_TYPE_C IN (1, 2) -- Placeholder: 1=Lab, 2=Radiology (Verify local codes)
UNION ALL
-- 5. Diagnostic Test Performed (Result Time or Procedure Start)
SELECT
CAST(c.PAT_ENC_CSN_ID AS VARCHAR(50)),
'Diagnostic Test Performed',
COALESCE(ord2.PROC_START_TIME, ord2.PROC_ENDING_TIME, ord.ORDER_INST),
c.DepartmentName,
emp.NAME,
c.PAT_MRN_ID,
CAST(c.ACUITY_LEVEL_C AS VARCHAR(50)),
CAST(c.ENC_TYPE_C AS VARCHAR(50)),
NULL,
NULL,
c.DischargeDisposition,
'Epic EHR',
GETDATE()
FROM Cohort c
JOIN ORDER_PROC ord ON c.PAT_ENC_CSN_ID = ord.PAT_ENC_CSN_ID
JOIN ORDER_PROC_2 ord2 ON ord.ORDER_PROC_ID = ord2.ORDER_PROC_ID
LEFT JOIN CLARITY_EMP emp ON ord.ORDERING_PROV_ID = emp.PROV_ID
WHERE ord.ORDER_TYPE_C IN (1, 2)
AND ord2.PROC_START_TIME IS NOT NULL
UNION ALL
-- 6. Diagnosis Confirmed
SELECT
CAST(c.PAT_ENC_CSN_ID AS VARCHAR(50)),
'Diagnosis Confirmed',
dx.NOTED_DATE,
c.DepartmentName,
c.ProviderName,
c.PAT_MRN_ID,
CAST(c.ACUITY_LEVEL_C AS VARCHAR(50)),
CAST(c.ENC_TYPE_C AS VARCHAR(50)),
edg.DX_NAME,
NULL,
c.DischargeDisposition,
'Epic EHR',
GETDATE()
FROM Cohort c
JOIN PAT_ENC_DX dx ON c.PAT_ENC_CSN_ID = dx.PAT_ENC_CSN_ID
JOIN CLARITY_EDG edg ON dx.DX_ID = edg.DX_ID
WHERE dx.NOTED_DATE IS NOT NULL
UNION ALL
-- 7. Consultation Requested
SELECT
CAST(c.PAT_ENC_CSN_ID AS VARCHAR(50)),
'Consultation Requested',
ord.ORDER_INST,
c.DepartmentName,
emp.NAME,
c.PAT_MRN_ID,
CAST(c.ACUITY_LEVEL_C AS VARCHAR(50)),
CAST(c.ENC_TYPE_C AS VARCHAR(50)),
NULL,
NULL,
c.DischargeDisposition,
'Epic EHR',
GETDATE()
FROM Cohort c
JOIN ORDER_PROC ord ON c.PAT_ENC_CSN_ID = ord.PAT_ENC_CSN_ID
LEFT JOIN CLARITY_EMP emp ON ord.ORDERING_PROV_ID = emp.PROV_ID
WHERE ord.ORDER_TYPE_C = 35 -- Placeholder: Replace with ID for Consult
UNION ALL
-- 8. Consultation Completed
SELECT
CAST(c.PAT_ENC_CSN_ID AS VARCHAR(50)),
'Consultation Completed',
ord.ORDER_END_TIME,
c.DepartmentName,
emp.NAME,
c.PAT_MRN_ID,
CAST(c.ACUITY_LEVEL_C AS VARCHAR(50)),
CAST(c.ENC_TYPE_C AS VARCHAR(50)),
NULL,
NULL,
c.DischargeDisposition,
'Epic EHR',
GETDATE()
FROM Cohort c
JOIN ORDER_PROC ord ON c.PAT_ENC_CSN_ID = ord.PAT_ENC_CSN_ID
LEFT JOIN CLARITY_EMP emp ON ord.ORDERING_PROV_ID = emp.PROV_ID
WHERE ord.ORDER_TYPE_C = 35 -- Placeholder: Replace with ID for Consult
AND ord.ORDER_STATUS_C = 5 -- Placeholder: 5=Completed
AND ord.ORDER_END_TIME IS NOT NULL
UNION ALL
-- 9. Medication Administered
SELECT
CAST(c.PAT_ENC_CSN_ID AS VARCHAR(50)),
'Medication Administered',
mar.TAKEN_TIME,
c.DepartmentName,
emp.NAME,
c.PAT_MRN_ID,
CAST(c.ACUITY_LEVEL_C AS VARCHAR(50)),
CAST(c.ENC_TYPE_C AS VARCHAR(50)),
NULL,
NULL,
c.DischargeDisposition,
'Epic EHR',
GETDATE()
FROM Cohort c
JOIN ORDER_MED med ON c.PAT_ENC_CSN_ID = med.PAT_ENC_CSN_ID
JOIN MAR_ADMIN_INFO mar ON med.ORDER_MED_ID = mar.ORDER_MED_ID
LEFT JOIN CLARITY_EMP emp ON mar.TAKEN_USER_ID = emp.USER_ID
WHERE mar.TAKEN_TIME IS NOT NULL
AND mar.MAR_ACTION_C = 1 -- Placeholder: 1=Given
UNION ALL
-- 10. Transfer Ordered
SELECT
CAST(c.PAT_ENC_CSN_ID AS VARCHAR(50)),
'Transfer Ordered',
ord.ORDER_INST,
c.DepartmentName,
emp.NAME,
c.PAT_MRN_ID,
CAST(c.ACUITY_LEVEL_C AS VARCHAR(50)),
CAST(c.ENC_TYPE_C AS VARCHAR(50)),
NULL,
NULL,
c.DischargeDisposition,
'Epic EHR',
GETDATE()
FROM Cohort c
JOIN ORDER_PROC ord ON c.PAT_ENC_CSN_ID = ord.PAT_ENC_CSN_ID
LEFT JOIN CLARITY_EMP emp ON ord.ORDERING_PROV_ID = emp.PROV_ID
WHERE ord.ORDER_TYPE_C = 60 -- Placeholder: Replace with ID for Transfer/Bed Request
UNION ALL
-- 11. Patient Transferred
SELECT
CAST(c.PAT_ENC_CSN_ID AS VARCHAR(50)),
'Patient Transferred',
adt.EFFECTIVE_TIME,
dep.DEPARTMENT_NAME,
c.ProviderName,
c.PAT_MRN_ID,
CAST(c.ACUITY_LEVEL_C AS VARCHAR(50)),
CAST(c.ENC_TYPE_C AS VARCHAR(50)),
NULL,
NULL,
c.DischargeDisposition,
'Epic EHR',
GETDATE()
FROM Cohort c
JOIN CLARITY_ADT adt ON c.PAT_ENC_CSN_ID = adt.PAT_ENC_CSN_ID
LEFT JOIN CLARITY_DEP dep ON adt.DEPARTMENT_ID = dep.DEPARTMENT_ID
WHERE adt.EVENT_TYPE_C = 3 -- 3=Transfer In
UNION ALL
-- 12. Discharge Planning Initiated
SELECT
CAST(c.PAT_ENC_CSN_ID AS VARCHAR(50)),
'Discharge Planning Initiated',
ord.ORDER_INST,
c.DepartmentName,
emp.NAME,
c.PAT_MRN_ID,
CAST(c.ACUITY_LEVEL_C AS VARCHAR(50)),
CAST(c.ENC_TYPE_C AS VARCHAR(50)),
NULL,
NULL,
c.DischargeDisposition,
'Epic EHR',
GETDATE()
FROM Cohort c
JOIN ORDER_PROC ord ON c.PAT_ENC_CSN_ID = ord.PAT_ENC_CSN_ID
LEFT JOIN CLARITY_EMP emp ON ord.ORDERING_PROV_ID = emp.PROV_ID
WHERE ord.ORDER_TYPE_C = 70 -- Placeholder: Case Management/Discharge Order Type
UNION ALL
-- 13. Discharge Order Signed
SELECT
CAST(c.PAT_ENC_CSN_ID AS VARCHAR(50)),
'Discharge Order Signed',
ord.ORDER_INST,
c.DepartmentName,
emp.NAME,
c.PAT_MRN_ID,
CAST(c.ACUITY_LEVEL_C AS VARCHAR(50)),
CAST(c.ENC_TYPE_C AS VARCHAR(50)),
NULL,
NULL,
c.DischargeDisposition,
'Epic EHR',
GETDATE()
FROM Cohort c
JOIN ORDER_PROC ord ON c.PAT_ENC_CSN_ID = ord.PAT_ENC_CSN_ID
LEFT JOIN CLARITY_EMP emp ON ord.ORDERING_PROV_ID = emp.PROV_ID
WHERE ord.PROC_CODE = 'DISCHARGE' -- Placeholder: Filter by specific discharge procedure code
UNION ALL
-- 14. Patient Discharged
SELECT
CAST(c.PAT_ENC_CSN_ID AS VARCHAR(50)),
'Patient Discharged',
c.HOSP_DISCH_TIME,
c.DepartmentName,
c.ProviderName,
c.PAT_MRN_ID,
CAST(c.ACUITY_LEVEL_C AS VARCHAR(50)),
CAST(c.ENC_TYPE_C AS VARCHAR(50)),
NULL,
NULL,
c.DischargeDisposition,
'Epic EHR',
GETDATE()
FROM Cohort c
WHERE c.HOSP_DISCH_TIME IS NOT NULL
UNION ALL
-- 15. Follow-up Appointment Scheduled
SELECT
CAST(c.PAT_ENC_CSN_ID AS VARCHAR(50)),
'Follow-up Appointment Scheduled',
next_pe.APPT_MADE_DATE,
c.DepartmentName,
c.ProviderName,
c.PAT_MRN_ID,
CAST(c.ACUITY_LEVEL_C AS VARCHAR(50)),
CAST(c.ENC_TYPE_C AS VARCHAR(50)),
NULL,
NULL,
c.DischargeDisposition,
'Epic EHR',
GETDATE()
FROM Cohort c
JOIN PAT_ENC next_pe ON c.PAT_ID = next_pe.PAT_ID
WHERE next_pe.APPT_MADE_DATE BETWEEN c.HOSP_ADMSN_TIME AND ISNULL(c.HOSP_DISCH_TIME, GETDATE())
AND next_pe.CONTACT_DATE > c.HOSP_ADMSN_TIME -- The appointment is for a future date relative to admission 準備はできましたか?
このテンプレートをEpicのデータに適用して、臨床業務の変革を始めましょう。データ抽出の進め方について、ProcessMindのチームがすぐに効果を得られるよう支援します。
患者ジャーニーを最適化し、今日からサイクルタイムを短縮
臨床業務のボトルネックを特定し、サイクルタイムを30%短縮します。
クレジットカードは不要です。設定は数分で完了します。