患者の診療プロセス向けデータテンプレート
患者の診療プロセス向けデータテンプレート
- 診療状況の把握に推奨される属性
- 追跡すべき主要なプロセスの節目
- 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 | 特定の患者の受診または診療エピソードを一意に識別するIDです。 | ||
| 説明 患者診療エピソードは、プロセスマイニングにおける主要なケース識別子です。入院や救急外来の受診など、1回の継続した診療期間に関する臨床、事務、ロジスティクス上のイベントをまとめます。Epic Clarityでは通常、Contact Serial Number(CSN)またはEncounter IDに該当します。 この属性を分析すると、患者の受診から診療終了までの流れを再構成できます。トリアージ、診断、治療、退院に関するアクティビティを、1つのまとまったプロセスとして関連付けられます。 重要な理由 個別のイベントを1つのプロセスケースにまとめるための基本となるキーです。 入手先 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などの尺度で表されます。「トリアージ完了」アクティビティの際に記録されます。 重症度スコア別のリソース負荷を示すダッシュボードで、患者を分類するために使用します。緊急度の高い患者は低い患者とは異なるプロセスをたどるため、この項目でバリアントを区別できます。 重要な理由 緊急度と予想されるリソース消費量に基づいてプロセスを分類できます。 入手先 救急部門のログにある緊急度項目については、Epic EHRの文書をご確認ください。 例 1:蘇生2:緊急3:準緊急 | |||
| 主傷病コード PrimaryDiagnosisCode | 主な診断を示すICD-10コードまたは院内コードです。 | ||
| 説明 この属性には、患者の確定診断が記録されます。通常、「診断確定」アクティビティの際に入力されます。 臨床プロトコルのコンプライアンスビューで、臨床状態ごとにケースを分類するために使用します。「製品」に対応付けることで、病状によってケアの提供プロセスがどう異なるかを分析できます。 重要な理由 臨床状態が似たケースをまとめ、プロトコルを分析できます。 入手先 Epic Clarityテーブル:PAT_ENC_DX、列:DX_ID 例 J18.9I21.9E11.9 | |||
| 再入院フラグ ReadmissionFlag | 患者が30日以内に予期せず再入院したかを示します。 | ||
| 説明 この真偽値属性は、同じ患者がこの診療エピソードの後、30日以内に予定外の入院をしたかを示します。30日以内の予定外再入院率を示す重要業績評価指標(KPI)の中核となる項目です。 分析では、主要な結果指標として扱います。フラグがtrueとなったケースのプロセスを分析し、退院計画段階における根本原因を特定します。 重要な理由 退院プロセスの問題やケアの質に関する課題を特定できます。 入手先 同じMRNの将来の受診記録をSQLで参照して算出します。 例 truefalse | |||
| 医療従事者ID ProviderId | アクティビティを実施したユーザーまたは医療従事者の識別子です。 | ||
| 説明 この属性には、イベントを担当した職員の一意のIDが記録されます。薬剤を投与した看護師や退院オーダーを承認した医師などが該当します。 リソースごとの業務のばらつきや負荷を分析するため、汎用属性の「ユーザー」に対応付けます。自動処理の場合は、システムユーザーIDが記録されることがあります。 重要な理由 職員ごとの業務実績のばらつきや負荷を分析できます。 入手先 Epic Clarityテーブル:CLARITY_EMP、列:USER_ID 例 EMP10023DOC5592SYSTEM | |||
| 受診種別 EncounterType | 患者の受診区分です(入院、救急など)。 | ||
| 説明 この属性は患者の診療エピソードの種類を分類します。一般的な値には「救急」「入院」「外来」「オンライン診療」などがあります。 「ケースタイプ」に対応付けるこの項目は、分析対象を絞り込むうえで基本となります。たとえば、退院計画のダッシュボードは主に入院患者を対象とし、トリアージは救急患者に特化しています。 重要な理由 プロセスの各ケースを大きな視点から把握するための情報です。 入手先 Epic Clarityテーブル:PAT_ENC、列:ENC_TYPE_C 例 救急病院外来入院 | |||
| 患者の医療記録番号 PatientMrn | 患者を識別する医療記録番号です。 | ||
| 説明 MRNは医療システム全体で患者を一意に識別する番号で、診療エピソードIDとは異なります。複数回の受診にわたって患者の履歴を追跡できます。 再入院の検出や、再入院リスクのダッシュボードで別々の診療エピソードを関連付ける際に使用します。汎用モデルでは「顧客」に対応付けます。 重要な理由 再受診の特定や患者の診療履歴の分析に欠かせません。 入手先 Epic Clarityテーブル:PATIENT、列:PAT_IDまたはPAT_MRN_ID 例 MRN-882910MRN-112003MRN-554211 | |||
| 診療科名 DepartmentName | アクティビティが行われた病棟または診療科です。 | ||
| 説明 この属性は、イベントが発生した場所や機能部門を示します。「救急部門」「放射線科」「一般外科病棟」などが該当します。院内病棟間移動の分析に欠かせません。 データを使って診療科ごとにプロセスマップを分けることで、各部門に固有のボトルネックと、病院全体に共通する問題を切り分けられます。 重要な理由 組織単位でデータを絞り込み、部門間の引き継ぎを分析できます。 入手先 Epic Clarityテーブル:CLARITY_DEP、列:DEPARTMENT_NAME 例 救急部門放射線科ICU小児科 | |||
| 退院先 DischargeDisposition | 退院後の患者の行き先です(自宅、熟練看護施設、死亡)。 | ||
| 説明 この属性には、患者が退院後にどこへ移ったかが記録されます。「患者退院」アクティビティの際に入力されます。 再入院リスクのダッシュボードで重要な項目です。熟練看護施設(SNF)へ退院した患者と自宅へ退院した患者では、再入院の傾向が異なるためです。 重要な理由 ケアプロセスの結果を把握するための情報です。 入手先 Epic Clarityテーブル:PAT_ENC、列:DISCH_DISP_C 例 自宅熟練看護施設在宅医療 | |||
| オーダー医の専門分野 OrderingProviderSpecialty | 診察や検査を依頼した医師の専門分野です。 | ||
| 説明 この属性には、オーダーを出した医療従事者の診療科または専門分野(「循環器科」「腫瘍科」など)が記録されます。専門医の診察待ち時間を示すダッシュボードで使用します。 特定の専門分野で院内サービスの待ち時間が長くなっていないかを分析し、診療科ごとの偏りやリソース不足の可能性を明らかにできます。 重要な理由 検査や診察サービスへの需要を分類できます。 入手先 医療従事者のマスターデータについては、Epic EHRの文書をご確認ください。 例 循環器科内科整形外科 | |||
| プロトコル遵守状況 ProtocolAdherenceStatus | 標準的な臨床パスに沿ってケースが進んだかを示すステータスです。 | ||
| 説明 この属性は、ケース内のアクティビティの順序を、定義済みの参照モデル(標準業務手順書)と比較します。臨床プロトコルのコンプライアンスビューで使用します。 値には「遵守」「ステップの省略」「順序の逸脱」などがあります。プロセスマップを1件ずつ確認しなくても、臨床責任者が基準に適合しないケースをすばやく絞り込めます。 重要な理由 エビデンスに基づくケア基準からの逸脱をすばやく特定できます。 入手先 プロセスマイニングツール内で算出するか、SQLで事前に処理します。 例 遵守逸脱未完了 | |||
| 予約の自動化 IsAutomatedScheduling | 職員の介入なしに予約が行われたかを示すフラグです。 | ||
| 説明 この真偽値属性は予約方法から算出します。MyChartまたはCadenceの自動ワークフローで予約された場合は、trueになります。 フォローアップ予約の自動化率を示す重要業績評価指標(KPI)の算出に直接使用します。事務作業の負担がテクノロジーによってどの程度軽減されているかを、業務責任者が把握するのに役立ちます。 重要な理由 プロセスの自動化がどの程度進んでいるかを測定します。 入手先 SchedulingMethodから算出します。 例 truefalse | |||
| 予約方法 SchedulingMethod | フォローアップの予約方法を示します。 | ||
| 説明 この属性には、「MyChart」「Cadence自動予約」「受付」など、予約に使用した方法が記録されます。外来フォローアップ予約の自動化状況を示すダッシュボードで重要な項目です。 システム経由または患者自身が操作するデジタル手段を示す値の場合、「自動化済み」フラグをtrueに設定できます。デジタル化の取り組みがどの程度成果を上げているかを確認できます。 重要な理由 自動化ツールやセルフサービスツールの利用状況を把握できます。 入手先 予約の作成元については、Epic EHRの文書をご確認ください。 例 MyChartCadence電話対面 | |||
| 地域名 RegionName | 地理的な地域または病院キャンパスです。 | ||
| 説明 複数のキャンパスを持つ医療システムでは、この属性で施設の所在地を識別します。病院ごとの実績を比較できます。 「地域」に対応付けると、複数施設間でベンチマークを行い、トリアージ処理が他の病院より円滑な施設があるかを確認できます。 重要な理由 医療ネットワーク内の施設間でベンチマークを行えます。 入手先 診療科または施設のマスターデータから取得します。 例 北キャンパスシティセンター西棟 | |||
| 診断オーダー費用 DiagnosticOrderCost | 診断検査または処置にかかる院内費用です。 | ||
| 説明 この属性は、「診断検査の実施」アクティビティに金額を割り当て、プロセスマップに費用情報を重ねて表示できるようにします。 臨床上の主要指標ではありませんが、特に重症度スコアが高く、多くのリソースを必要とするバリアントについて、管理部門が費用面の影響を把握するのに役立ちます。 重要な理由 プロセスの効率分析に費用の視点を加えます。 入手先 処置に紐づく請求または原価計算のテーブルです。 例 150.001200.0045.00 | |||
| 転棟待ち時間 TransferWaitDuration | 転棟オーダーから実際に転棟するまでの経過時間です。 | ||
| 説明 この指標は、「転棟オーダー」から「患者の転棟」までの時間差を測定します。院内病棟間移動の分析における主要なデータです。 値が大きい場合、病床が空くのを患者が待つ「病床待ち」が発生している可能性があります。その結果、救急部門から先の患者の流れが滞ります。 重要な理由 患者の流れにおけるロジスティクスやキャパシティのボトルネックを明らかにします。 入手先 オーダーと転棟のイベントのタイムスタンプの差から算出します。 例 2時間30分45分12時間 | |||
患者の診療プロセスに関するアクティビティ
| アクティビティ | 説明 | ||
|---|---|---|---|
| トリアージ完了 | 初回の看護評価またはトリアージ評価が完了した時点です。通常、トリアージのフローシートが登録されたとき、またはトリアージのステータスが「Complete」に変わったときに記録されます。 | ||
| 重要な理由 初期対応の効率を測る「トリアージの処理状況と待ち時間」ダッシュボードに欠かせないイベントです。ここでの遅れは、ケア経路全体に影響します。 入手先 PAT_ENC_HSP.TRIAGE_END_TIME、または特定のフローシート行の登録タイムスタンプ(FLO_MEASUREMENT)。 記録 トリアージの文書化への署名時、またはステータスフィールドの更新時に記録 イベントタイプ explicit | |||
| 患者の受付 | システムに患者の受診記録を初めて作成し、診療エピソードを開始するイベントです。患者が受付窓口または救急部門に到着し、Epicで受付処理が行われた時点で記録されます。 | ||
| 重要な理由 患者の診療経過全体の起点となり、在院日数の計算に使われます。「トリアージの処理状況と待ち時間」ダッシュボードに必要なイベントです。 入手先 ADTフィード(イベントA04またはA01)、またはClarityテーブルPAT_ENC(HSP_ACCOUNT_IDの作成)。 記録 「Check In」または「Admit」のトランザクション実行時に記録 イベントタイプ explicit | |||
| 患者の退院 | 入院診療エピソードが正式に終了した時点です。患者が在院者リストから退院扱いになったときに記録されます。 | ||
| 重要な理由 在院日数の計算における診療エピソードの正式な終了点です。「患者の経路バリアントの検出」に必要なイベントです。 入手先 ADTフィード(イベントA03)、またはPAT_ENC_HSP.DISCH_TIME。 記録 事務スタッフが退院ワークフローを完了したときに記録 イベントタイプ explicit | |||
| 診断確定 | 患者の問題リストまたは診療エピソードの診断フィールドに、確定診断が入力された時点です。診断を特定するための検査段階の終了を示します。 | ||
| 重要な理由 「確定診断までの時間」重要業績評価指標(KPI)の算出に必要なイベントです。評価から対象を絞った治療への移行を示します。 入手先 診療エピソードに関連付けられたPAT_ENC_DXテーブル、またはPROBLEM_LISTの更新。 記録 医療従事者が診療エピソードの診断アクティビティに記録を追加したときに記録 イベントタイプ explicit | |||
| ケア計画の開始 | 患者に特定の臨床経路またはプロトコルを割り当てた時点です。標準のオーダーセットまたはケア計画が診療エピソードに適用されたときに記録されます。 | ||
| 重要な理由 標準的なケアに沿って診療する意図を示すイベントで、「臨床プロトコルのコンプライアンスビュー」を支えます。この時点以降に予定された手順からの逸脱を測定できます。 入手先 プロトコルが診療エピソードに関連付けられたことを示すORDER_SET_BKGまたはケア計画のテーブル。 記録 医療従事者がオーダーセットを選択して署名したときに記録 イベントタイプ explicit | |||
| フォローアップ予約 | 患者の将来の外来受診を予約します。患者記録に紐づくCadenceの予約管理モジュールに記録されます。 | ||
| 重要な理由 「フォローアップ予約の自動化率」の算出に使用します。継続的なケアを支え、再入院の予防に役立ちます。 入手先 患者IDに紐づくPAT_ENC_APPT。退院時刻の前後に作成されます。 記録 Cadenceで予約枠が確定した時点で記録されます イベントタイプ explicit | |||
| 専門医の診察完了 | 専門医による評価が完了した時点です。通常、診察記録への署名、または診察オーダーの終了によって記録されます。 | ||
| 重要な理由 「専門医の診察対応までの時間」の終点です。専門医の助言が提供され、ケア計画を進められる状態になったことを示します。 入手先 HNO_NOTE_TEXT(種類がConsultの記録)、またはステータスがCompletedに変わったORDER_PROC。 記録 診察記録の作成時刻、またはオーダーのステータス更新から推定 イベントタイプ inferred | |||
| 専門医への診察依頼 | 専門医による患者の評価を依頼した時点です。Epicでは、手順オーダーの種類「Consult」として記録されます。 | ||
| 重要な理由 「専門医の診察対応までの時間」重要業績評価指標(KPI)の起点です。特定の診療科における人員不足の把握に役立ちます。 入手先 ORDER_CLASSが「Consult」のORDER_PROC、または特定の紹介オーダー。 記録 診察オーダーへの署名時に記録 イベントタイプ explicit | |||
| 患者の移送 | 患者が別の部門または病棟へ実際に移動した時点です。ADTの転送イベントを通じて記録されます。 | ||
| 重要な理由 「病棟間の平均移送時間」の終点です。「院内病棟間移送分析」に使い、病院内の調整におけるボトルネックを特定します。 入手先 ADTフィード(イベントA02)、またはPAT_ENC_HSP_TRANSACTION(Transfer In)。 記録 病棟事務スタッフが患者の所在をCensusで更新したときに記録 イベントタイプ explicit | |||
| 投薬 | 看護師または医療従事者が患者に薬剤を投与した時点です。投薬記録(MAR)に記録されます。 | ||
| 重要な理由 「投薬実績」ダッシュボードの主要イベントです。「治療計画の作成」への適合状況を追跡します。 入手先 MAR_ADMIN_INFOテーブルのうち、アクションが「Given」または「New Bag」のイベント。 記録 看護師が患者のリストバンドと薬剤をスキャンしたときに記録(BCMA) イベントタイプ explicit | |||
| 診断検査の依頼 | 画像診断(放射線科)または検査室サービスのオーダーが入力された時点です。医師がCPOEシステムでオーダーを入力し、署名したときに記録されます。 | ||
| 重要な理由 「診断サービスのサイクルタイム」ダッシュボードの起点です。検査結果が伴わないまま依頼件数が多い場合、ボトルネックの可能性があります。 入手先 ORDER_TYPEがLabまたはImaging/RadiologyであるORDER_PROCテーブル。 記録 オーダーのステータスが「Signed」または「Active」になったときに記録 イベントタイプ explicit | |||
| 診断検査の実施 | 診断検査の実施、または結果の登録が行われた時点です。検査室では検体の処理時、画像診断では撮影の完了時に記録されます。 | ||
| 重要な理由 「診断検査の平均サイクルタイム」重要業績評価指標(KPI)の終点です。臨床意思決定支援サービスの遅れを把握するうえで重要です。 入手先 ORDER_PROC.PROC_END_TIME、またはステータスが「Completed」もしくは「Resulted」に変わったときのORDER_STAT_HISTORY。 記録 技師が作業を完了したとき、または結果インターフェースがデータを受信したときに記録 イベントタイプ explicit | |||
| 転棟の依頼 | 患者を別の病棟または異なるレベルのケアへ移す依頼です。システムでは「Bed Request」または「Transfer Order」として記録されます。 | ||
| 重要な理由 「病棟間の平均移送時間」の起点です。移送を決めた臨床上の判断と、病床の空き状況などの調整上の要因を区別できます。 入手先 ADT_TRANSFER_ORDER、またはORDER_PROC(Bed Request)。 記録 医師が転棟オーダーを入力したときに記録 イベントタイプ explicit | |||
| 退院オーダーへの署名 | 患者の退院を医師が正式に承認した時点です。Epic上の特定のオーダー入力として記録されます。 | ||
| 重要な理由 「退院計画と実施」における重要な節目です。この時点から実際の退院までの時間は、事務処理による遅れを示します。 入手先 種類が「Discharge Patient」のORDER_PROC。 記録 医師が退院オーダーに署名したときに記録 イベントタイプ explicit | |||
| 退院計画の開始 | 患者の退院に向けた準備を開始した時点です。ケースマネジメントの文書化、または特定の「Discharge」オーダーの種類を通じて記録されます。 | ||
| 重要な理由 「退院計画と実施」ダッシュボードの重要イベントです。早期に開始することは、在院日数の短縮と関連しています。 入手先 HSP_DISCH_PLANの作成、またはケースマネージャー/ソーシャルワーカーによる最初の記録。 記録 退院ナビゲーターとの最初のやり取り、またはケースマネジメントの記録から推定 イベントタイプ inferred | |||
データ抽出ガイド
ステップ
- Epic Hyperspaceにログインし、AnalyticsまたはMy ReportsのアクティビティからReporting Workbench(RWB)を起動します。
- 新規レポートを作成します。Libraryタブを選択し、テンプレートの**「Encounter Search」または「Patient Encounters」**を検索します。このテンプレートでは、CSN(Contact Serial Number)で識別される連絡単位の詳細を取得できます。
- 条件を設定(Settingsタブ):
- 完了したエピソードを取得するため、日付範囲(例:退院日=過去90日間)を設定します。
- 関連のない外来受診を除外するため、受診の種類(例:「入院受診」「救急」)で絞り込みます。
- 対象範囲を限定する必要がある場合は、部門または施設で絞り込みます。
- 表示列を設定(Displayタブ):
- ここがデータ抽出の重要な手順です。必要なアクティビティのタイムスタンプに対応する列を検索して追加します。
- 患者識別子を追加します:
CSN(患者エピソード)、MRN(患者ID)。 - 患者属性を追加します:
部門、退院時の転帰、主診断コード、医療提供者。 - タイムスタンプ列を追加します:
入院時刻、トリアージ終了時刻、退院時刻、退院指示時刻、初回投薬時刻などの列を検索します(正確な対応付けについては、クエリ/設定のセクションを参照してください)。
- レポートを実行し、プレビュー画面で結果を確認します。
- データをエクスポートします:
- ツールバー > エクスポートをクリックします。
- CSVまたは**テキスト(タブ区切り)**形式を選択します。
- 「列見出しを含める」にチェックが入っていることを確認します。
- ファイル名を
Raw_Epic_Extract.csvとして保存します。
- データ変換(重要):
- RWBのエクスポート結果は、患者エピソードごとに1行あり、複数のタイムスタンプ列を持つ「横持ち」データです。
- 各タイムスタンプ列がイベントログの個別の行になるよう、データを縦持ちに変換します。
PatientEpisodeId、ActivityName、EventTimestampおよび対応付けた属性を列に持つ最終ファイルを作成します。
- 日付形式の設定:
EventTimestampをProcessMindで使用できるISO形式(YYYY-MM-DD HH:MM:SS)にします。 - 最終確認:ファイルに
PatientEpisodeId、ActivityName、EventTimestampの見出しがあることを確認し、ProcessMindにアップロードします。
設定
- テンプレート:「Encounter Search」(LBF)またはEpicのバージョンに応じて「Find Patients」を使用します。
- 日付範囲:タイムアウトを避けるため、最初は3~6か月に限定します(RWBは大量データの一括抽出向けに最適化されていません)。
- 行数の上限:Epic RWBには行数の上限(例:25,000行または50,000行)が設定されていることがあります。日付範囲が上限を超えないようにするか、複数回に分けて実行してください。
- 権限:Reporting Workbenchの「Create」と「Export」のセキュリティポイントが必要です。
- パフォーマンス:過去の広い期間を検索する場合は、利用の少ない時間帯に実行してください。
- 粒度:この方法で取得できるのは、受診単位の要約タイムスタンプ(例:「First Med Admin」)です。特定の「Audit」テンプレートを使用しない限り、薬剤の投与1回ごとなど、すべての処置を抽出することはできません。この用途で使えるAuditテンプレートはまれです。
クエリの例 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を確認します:スクリプト全体を実行する前に、小規模な調査クエリを実行し、使用しているEpic環境で検査、放射線科、コンサルテーション、転棟に該当する
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をケースID、ActivityNameをアクティビティ、EventTimestampをタイムスタンプとして対応付けます。
設定
- データベース接続:Epic Clarity(通常はMSSQLまたはOracleのバックエンド)。
- 日付による絞り込み:
PAT_ENC.HOSP_ADMSN_TIMEまたはPAT_ENC.CONTACT_DATEで絞り込みます。クエリのパフォーマンスを保つため、初回分析では3~6か月の範囲を推奨します。 - 受診タイプ:このスクリプトでは入院および救急の受診を絞り込みます(
ENC_TYPE_Cの値は通常3および50ですが、ZC_ENC_TYPEで確認してください)。 - オーダータイプ:施設ごとの
ZC_ORDER_TYPE設定に基づき、検査、画像診断、コンサルテーションのORDER_TYPE_Cの値を設定する必要があります。 - パフォーマンス:このスクリプトはデータ量の多いテーブル(
ORDER_PROC、CLARITY_ADT)を検索します。適切なインデックスを使用するか、利用の少ない時間帯に実行してください。
クエリの例 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のデータに適用し、診療業務の改善を始めましょう。すぐに効果を得られるよう、データ抽出の手順をご案内します。
患者の診療プロセスを最適化し、サイクルタイムを短縮
診療上のボトルネックを特定し、サイクルタイムを30%短縮します。
クレジットカードは不要です。設定は数分で完了します。