貴院の患者ジャーニーデータテンプレート
貴院の患者ジャーニーデータテンプレート
- 臨床コンテキストのための推奨属性
- 追跡のための主要なプロセス節目
- Epic EHR向けの具体的な抽出ガイダンス
患者ジャーニー属性
| 名前 | 説明 | ||
|---|---|---|---|
| アクティビティ名 ActivityName | 実行された特定の臨床的または管理的なアクション。 | ||
| 説明 この属性は、「患者登録済み」、「薬剤投与」、「退院オーダー署名済み」など、患者ジャーニー内で発生するイベントの名前を記録します。これはプロセスフローを定義する中心的な要素です。 分析では、このフィールドがプロセスマップのノードを形成します。これはEHR内のさまざまなトランザクションコードとオーダー状況から派生し、人間が読めるイベントログを作成します。 その重要性 プロセスのステップを定義し、ワークフローの可視化を可能にします。 取得元
例 トリアージ完了診断検査オーダー済み患者退院投薬実施済み | |||
| イベントのタイムスタンプ EventTimestamp | アクティビティが発生した正確な日時。 | ||
| 説明 この属性は、Epicシステムでイベントが記録された正確な時刻を記録します。これは、アクティビティをシーケンスし、入院期間やサイクルタイムなどのすべての期間ベースの指標を計算するために使用されます。 このフィールドの正確性は、ボトルネックを特定するために重要です。開始点と終了点のための時間的アンカーを提供することで、Triage ThroughputとTime to Definitive Diagnosisダッシュボードをサポートします。 その重要性 サイクルタイム、リードタイム、およびプロセス順序の計算を可能にします。 取得元 さまざまなタイムスタンプ列(例:EFFECTIVE_TIME、ORDER_TIME)。ソーステーブルによって異なります。 例 2023-10-15T08:30:00Z2023-10-15T09:15:22Z2023-10-16T14:20:00Z | |||
| 患者エピソード PatientEpisodeId | 特定の患者受診またはケアエピソードの一意の識別子。 | ||
| 説明 患者エピソードは、プロセスマイニングにおける主要なケース識別子として機能します。これは、入院滞在や救急外来受診といった単一の継続的なケア期間に関連するすべての臨床、管理、物流イベントをグループ化します。Epic Clarityでは、これは通常、連絡シリアル番号(CSN)または受診IDに対応します。 この属性を分析することで、エンドツーエンドの患者ジャーニーの再構築が可能になります。これにより、トリアージ、診断、治療、および退院アクティビティを統合されたプロセスインスタンスとして関連付けることができます。 その重要性 異なるイベントを単一のプロセスケースにリンクするための基本的な鍵です。 取得元 Epic Clarityテーブル: 例 200459112200459113200459114200459115 | |||
| ソースシステム SourceSystem | データの記録システム、通常はEpic EHRです。 | ||
| 説明 この属性はデータの出所を識別します。このビューでは主に「Epic EHR」ですが、別のLIS(検査情報システム)や会計システムなどの他のシステムとデータが統合されている場合に役立ちます。 分析では、データの系統を保証し、特定のイベントがソースと比較して欠落しているか、不正な形式であるように見える場合のトラブルシューティングに役立ちます。 その重要性 データソースのトレーサビリティとコンテキストを提供します。 取得元 接続文字列設定からハードコードまたは派生します。 例 Epic EHREpic ClarityEpic Caboodle | |||
| 最終データ更新 LastDataUpdate | データが抽出または最終更新されたときのタイムスタンプ。 | ||
| 説明 この属性は、ETLパイプラインによってレコードが最後に処理された時期を示します。これはイベントタイムスタンプとは異なり、データの鮮度を監視するのに役立ちます。 アナリストはこれを使用して、ダッシュボードがリアルタイムの現実を反映しているか、またはTriage Wait TimesのようなKPIの精度に影響を与えるデータ遅延の問題があるかどうかを判断します。 その重要性 プロセスマイニングデータの鮮度と信頼性を評価するのに役立ちます。 取得元 ETLシステムタイムスタンプ。 例 2023-10-27T23:59:59Z2023-10-28T06:00:00Z | |||
| イベントの終了時刻 EventEndTime | アクティビティが完了したときのタイムスタンプ。 | ||
| 説明 多くのイベントは瞬時ですが、「診断テスト実施」や「コンサルテーション完了」などの一部のアクティビティには期間があります。この属性は完了時刻を記録します。 これにより、アクティブな処理時間と待機時間の計算が可能になります。これはDiagnostic Service Cycle Timesダッシュボードにとって特に重要です。 その重要性 活動期間とリソース利用率の計算を可能にします。 取得元
例 2023-10-15T09:45:00Z2023-10-16T15:00:00Z | |||
| トリアージ緊急度レベル TriageAcuityLevel | トリアージ中に患者に割り当てられた重症度スコア。 | ||
| 説明 この属性は、患者の状態の緊急性を示し、通常はスケール(例:ESIレベル1-5)で表されます。これは「Triage Completed」アクティビティ中に記録されます。 Resource Intensity by Severity Scoreダッシュボードでセグメンテーションを可能にします。重症度の高い患者は重症度の低い患者とは異なるプロセスパスをたどり、このフィールドはこれらのバリアントを区別するのに役立ちます。 その重要性 緊急度と予測されるリソース消費に基づいてプロセスをセグメント化します。 取得元 EDログの緊急度フィールドについては、Epic EHRのドキュメントを参照してください。 例 1 - 蘇生2 - 緊急3 - 準緊急 | |||
| 主診断コード PrimaryDiagnosisCode | 主な診断を表すICD-10または内部コード。 | ||
| 説明 この属性は、患者の確定された病状を記録します。これは通常、「Diagnosis Confirmed」アクティビティ中に設定されます。 Clinical Protocol Compliance Viewのために臨床状態によってケースをグループ化するために使用されます。「Product」にマッピングすることで、アナリストは医療状態によってケアの「生産」がどのように異なるかを確認できます。 その重要性 プロトコル分析のために、臨床的な類似性によってケースをグループ化します。 取得元 Epic Clarityテーブル: 例 J18.9I21.9E11.9 | |||
| 再入院フラグ ReadmissionFlag | 患者が30日以内に予期せぬ再受診をしたかどうかを示します。 | ||
| 説明 このブール属性は、特定の患者エピソードが30日以内に同じ患者の別の予定外入院に続いたかどうかを識別します。これは30-Day Unplanned Readmission Rate KPIの核となります。 分析において、これは主要なアウトカム変数として機能します。「True」フラグにつながるプロセスパスは、退院計画フェーズにおける根本原因を見つけるために分析されます。 その重要性 失敗した退院プロセスとケアの質の問題を特定します。 取得元 同じMRNの将来の受診を先読みするSQLを介して算出されます。 例 truefalse | |||
| 受診タイプ EncounterType | 患者受診の分類(例:入院、救急)。 | ||
| 説明 この属性は、患者エピソードの性質を分類します。一般的な値には、「緊急」、「入院」、「外来」、「仮想」などが含まれます。 「CaseType」にマッピングされるこのフィールドは、分析をフィルタリングするために不可欠です。例えば、Discharge Planningダッシュボードは主に入院受診に関連し、Triageは緊急に特有です。 その重要性 プロセスインスタンスの概要コンテキストを提供します。 取得元 Epic Clarityテーブル: 例 緊急病院外来入院 | |||
| 患者MRN PatientMrn | 患者を識別する医療記録番号。 | ||
| 説明 MRNは、エピソードIDとは異なり、医療システム全体で患者を識別する一意の識別子です。これにより、複数の受診にわたる患者の履歴を追跡できます。 この属性は、再入院を検出し、「Readmission Risk」ダッシュボードのために個別のエピソードをリンクするために使用されます。汎用モデルの「顧客」にマッピングされます。 その重要性 再受診を特定し、患者の病歴を分析するために不可欠です。 取得元 Epic Clarityテーブル: 例 MRN-882910MRN-112003MRN-554211 | |||
| 提供者ID ProviderId | アクティビティを実行したユーザーまたは臨床医の識別子。 | ||
| 説明 この属性は、薬剤を投与する看護師や退院オーダーに署名する医師など、イベントを担当するスタッフメンバーの一意のIDを記録します。 これは、「User」汎用属性にマッピングされ、リソースの変動とワークロードを分析します。自動化されたアクティビティの場合、これはシステムユーザーIDである可能性があることに注意してください。 その重要性 スタッフ全体のパフォーマンスと作業負荷の変動分析を可能にします。 取得元 Epic Clarityテーブル: 例 EMP10023DOC5592SYSTEM | |||
| 退院時転帰 DischargeDisposition | 退院時の患者の行き先(自宅、専門看護施設、死亡)。 | ||
| 説明 この属性は、患者が退院後にどこへ行ったかを記録します。これは「Patient Discharged」アクティビティで記録されます。 専門看護施設(SNF)に退院した患者は、自宅に退院した患者とは異なる再入院プロファイルを持つため、Readmission Riskダッシュボードにとって不可欠です。 その重要性 ケアプロセスの結果を文脈化します。 取得元 Epic Clarityテーブル: 例 ホーム専門看護施設在宅医療 | |||
| 部門名 DepartmentName | アクティビティが行われた病棟または部門。 | ||
| 説明 この属性は、「救急外来」、「放射線科」、「一般外科病棟」など、イベントの機能的な場所を識別します。Internal Ward Transfer Analysisにとって重要です。 データはプロセスマップを部門別にセグメント化するために使用され、管理者が自部門に特有のボトルネックと病院全体の問題を区別できるようにします。 その重要性 組織フィルタリングと引き渡し分析を可能にします。 取得元 Epic Clarityテーブル: 例 救急部門放射線科ICU小児科 | |||
| オーダー発行医師の専門科 OrderingProviderSpecialty | コンサルトまたは検査を依頼する医師の専門分野。 | ||
| 説明 この属性は、オーダー発行元の提供者の部門または専門分野(例:「循環器科」、「腫瘍科」)を記録します。Specialist Consultation Latencyダッシュボードで使用されます。 これにより、特定の専門分野が他の専門分野よりも内部サービスで長い待ち時間に直面しているかどうかを分析するのに役立ち、特定のサービスラインにおける潜在的な偏りやリソース不足を明らかにします。 その重要性 診断およびコンサルテーションサービスへの需要をセグメント化します。 取得元 プロバイダーマスターデータについては、Epic EHRのドキュメントを参照してください。 例 循環器内科内科整形外科 | |||
| スケジュール方法 SchedulingMethod | フォローアップ予約がどのように行われたかを示します。 | ||
| 説明 この属性は、「MyChart」、「Cadence Auto」、「Front Desk」などの予約チャネルを記録します。Outpatient Follow Up Automation Statusダッシュボードにとって重要です。 値がシステムまたは患者主導のデジタルチャネルを示す場合、「IsAutomated」フラグをTrueに設定できます。これはデジタルトランスフォーメーション (DX) イニシアチブの成功を浮き彫りにします。 その重要性 自動化またはセルフサービスツールの導入状況を追跡します。 取得元 予約作成元については、Epic EHRのドキュメントを参照してください。 例 MyChartCadence電話番号対面 | |||
| プロトコル遵守ステータス ProtocolAdherenceStatus | ケースが標準的な臨床パスウェイに従ったかどうかを示すステータス。 | ||
| 説明 この属性は、ケース内のアクティビティのシーケンスを定義された参照モデル(標準作業手順書)と比較します。Clinical Protocol Compliance Viewをサポートします。 値には、「遵守」、「ステップスキップ」、または「順不同」が含まれる場合があります。これにより、臨床リーダーはすべてのプロセスマップを手動で検査することなく、非遵守ケースを迅速にフィルタリングできます。 その重要性 エビデンスに基づいたケア標準からの逸脱を迅速に特定します。 取得元 プロセスマイニングツール内で算出されるか、SQLで前処理されます。 例 準拠逸脱未完了 | |||
| 地域名 RegionName | 地理的地域または病院キャンパス。 | ||
| 説明 複数のキャンパスを持つ医療システムの場合、この属性は施設の場所を識別します。これにより、異なる病院サイト間でのパフォーマンス比較が可能になります。 「地域」へのマッピングにより、複数サイトでのベンチマークが可能になり、ある病院が別の病院よりもトリアージスループットをうまく管理しているかどうかを確認できます。 その重要性 医療ネットワーク内の異なる施設間でのベンチマークを可能にします。 取得元 部門または施設のマスタデータから派生します。 例 北キャンパスシティセンター西棟 | |||
| 投薬実施遅延 MedicationAdminDelay | 予定された薬剤投与と実際の薬剤投与の間の時間差。 | ||
| 説明 この属性は、指示された投与時刻と薬剤バーコードの実際のスキャン時刻との差異を計算します。これはMedication Delivery Performanceダッシュボードにとって不可欠です。 正の値は遅延投与を示します。この指標により、看護管理者は、業務負荷がタイムリーなケア提供に影響を与えているシフトや病棟を特定できます。 その重要性 看護ワークフローの遵守と患者安全の直接的な測定指標です。 取得元 MAR(投薬記録)データから算出されます。 例 15m-5m1時間20分 | |||
| 自動スケジューリングの有無 IsAutomatedScheduling | スタッフの介入なしにスケジューリングが実行されたかどうかを示すフラグ。 | ||
| 説明 このブール属性は、Scheduling Methodから派生します。予約がMyChartまたは自動化されたCadenceワークフローを介して行われた場合、これはTrueです。 Follow-up Scheduling Automation Rate KPIを直接サポートします。これにより、運用リーダーは、どれだけの管理負担がテクノロジーにオフロードされているかを理解できます。 その重要性 プロセス自動化の成功を測定します。 取得元 SchedulingMethodから派生します。 例 truefalse | |||
| 診断オーダー費用 DiagnosticOrderCost | 診断テストまたは処置に関連する内部コスト。 | ||
| 説明 この属性は「診断テスト実施」アクティビティに財務的な価値を割り当てます。これにより、プロセスマップに財務的な情報を重ねて表示できます。 主要な臨床指標ではありませんが、さまざまなプロセスバリアント、特に高リソースの重症度スコアを伴うものの財務的負担を管理者が理解するのに役立ちます。 その重要性 プロセス効率分析に財務的な側面を加えます。 取得元 処置にリンクされた請求または原価計算テーブル。 例 150.001200.0045.00 | |||
| 転送待機期間 TransferWaitDuration | 転送オーダーと実際の転送間の経過時間。 | ||
| 説明 この指標は、「転送指示」と「患者転送済み」の間のギャップを測定します。これはInternal Ward Transfer Analysisの主要なデータポイントです。 ここでの高い値は、「入院待機」(ベッド待ち患者)を示し、救急外来からの上流フローを阻害します。 その重要性 患者フローにおける物流およびキャパシティのボトルネックを浮き彫りにします。 取得元 オーダーと転送イベント間のタイムスタンプ差として算出されます。 例 2h 30m45m12h | |||
患者ジャーニーアクティビティ
| アクティビティ | 説明 | ||
|---|---|---|---|
| トリアージ完了 | 初期の看護アセスメントまたはトリアージ評価の完了。これは通常、トリアージフローシートが登録されたとき、またはトリアージステータスが「完了」に変わったときに記録されます。 | ||
| その重要性 「トリアージスループットと待ち時間」ダッシュボードでフロントエンドの効率を測定するために不可欠です。ここでの遅延は、ケアパスウェイ全体に波及します。 取得元 PAT_ENC_HSP.TRIAGE_END_TIMEまたは特定のフローシート行が登録されたときのタイムスタンプ (FLO_MEASUREMENT)。 取得 トリアージ文書が署名された際、またはステータスフィールドが更新された際に記録されます。 イベントタイプ explicit | |||
| 患者登録済み | システムにおける患者受診記録の最初の作成であり、ケアエピソードの開始を示します。これは、患者が受付または救急外来に到着し、Epicにチェックインされたときに明示的に記録されます。 | ||
| その重要性 患者ジャーニー全体のアンカーポイントを確立し、総入院期間の計算を可能にします。「トリアージスループットと待ち時間」ダッシュボードに不可欠です。 取得元 ADTフィード(イベントA04またはA01)またはClarityテーブル 取得 「チェックイン」または「入院」トランザクションが実行された際に記録されます。 イベントタイプ explicit | |||
| 患者退院 | 入院受診の正式な終了。患者が台帳から事実上退院したときに記録されます。 | ||
| その重要性 「Length of Stay」計算におけるエピソードの正式な終了点です。「Patient Flow Variant Discovery」に不可欠です。 取得元 ADTフィード(イベントA03)または 取得 管理スタッフが退院ワークフローを完了した際に記録されます。 イベントタイプ explicit | |||
| 診断確定 | 確定診断が患者の問題リストまたは受診診断フィールドに入力されること。調査フェーズの終了を表します。 | ||
| その重要性 「Time to Definitive Diagnosis」KPIのために必須です。アセスメントから標的治療への移行を示します。 取得元 PAT_ENC_DXテーブルまたはPROBLEM_LISTの更新で、受診に紐付けられたもの。 取得 臨床医が受診診断アクティビティにエントリを追加した際に記録されます。 イベントタイプ explicit | |||
| ケアプラン開始 | 特定の臨床パスウェイまたはプロトコルを患者に割り当てること。これは、標準的なオーダーセットまたはケアプランが受診コンテキストに適用されたときに記録されます。 | ||
| その重要性 標準的なケアに従う意図を示すことで、「Clinical Protocol Compliance View」をサポートします。その後の計画されたステップからの逸脱は、この時点から測定できます。 取得元 ORDER_SET_BKGまたはケアプランテーブル。プロトコルが受診に紐付けられたことを示します。 取得 臨床医がオーダーセットを選択し署名した際に記録されます。 イベントタイプ explicit | |||
| フォローアップ予約済み | 患者の将来の外来受診の予約。患者記録にリンクされたCadenceスケジューリングモジュールに記録されます。 | ||
| その重要性 「Follow-up Scheduling Automation Rate」をサポートします。継続的なケアを保証し、再入院の防止に役立ちます。 取得元 PAT_ENC_APPTは患者IDに紐付けられ、退院時刻近くに作成されました。 取得 Cadenceで予約枠が確定された際に記録されます。 イベントタイプ explicit | |||
| 患者転棟 | 患者が新しい部門または病棟へ物理的に移動すること。ADT転送イベントを通じて記録されます。 | ||
| その重要性 「平均病棟間転送時間」の終点。「院内病棟転送分析」をサポートし、病院ロジスティクスにおけるボトルネックを特定します。 取得元 ADTフィード(イベントA02)または 取得 病棟事務員がCensusで患者の場所を更新した際に記録されます。 イベントタイプ explicit | |||
| 投薬実施済み | 看護師または医療提供者が患者に薬剤を投与する行為。薬剤投与記録 (MAR) に記録されます。 | ||
| その重要性 「投薬実施パフォーマンス」ダッシュボードの主要イベント。「治療計画策定」への遵守を追跡します。 取得元
取得 看護師が患者のリストバンドと薬剤をスキャン(BCMA)した際に記録されます。 イベントタイプ explicit | |||
| 診察依頼済み | 専門医が患者を評価するためのオーダーです。Epic内では特定の処置オーダータイプ「コンサルト」として記録されます。 | ||
| その重要性 「Specialist Consultation Lead Time」KPIの開始点です。特定の医療専門分野における不足を特定するのに役立ちます。 取得元 ORDER_PROCにおいてORDER_CLASSが'Consult'であるか、特定の紹介オーダー。 取得 コンサルトオーダーが署名された際に記録されます。 イベントタイプ explicit | |||
| 診察完了 | 専門医アセスメントの完了。通常、コンサルトノートの署名またはコンサルトオーダーのクローズによって示されます。 | ||
| その重要性 「専門医診察リードタイム」の終点。専門的なアドバイスが提供され、ケアプランが進行可能であることを示します。 取得元
取得 コンサルトノート作成時刻またはオーダーのステータス更新から推測されます。 イベントタイプ inferred | |||
| 診断検査オーダー済み | 画像診断(放射線科)または検査サービスのためのオーダーの入力。医師がCPOEシステムでオーダーを入力し署名したときに記録されます。 | ||
| その重要性 「Diagnostic Service Cycle Times」ダッシュボードの開始点です。対応する結果なしに高いボリュームがある場合、ボトルネックを示します。 取得元 ORDER_PROCテーブルでORDER_TYPEがLabまたはImaging/Radiologyの場合。 取得 オーダーのステータスが「署名済み」または「アクティブ」になった際に記録されます。 イベントタイプ explicit | |||
| 診断検査実施済み | 診断テストの実際の実施、または結果の記録。検査の場合、検体が処理された時点。画像診断の場合、スキャンが完了した時点。 | ||
| その重要性 「診断検査平均サイクルタイム」KPIの終点。臨床意思決定支援サービスにおける遅延を理解するために不可欠です。 取得元 ORDER_PROC.PROC_END_TIMEまたはORDER_STAT_HISTORYにおいてステータスが'Completed'または'Resulted'に変わったとき。 取得 技術者がタスクを完了した際、または結果インターフェースがデータを受信した際に記録されます。 イベントタイプ explicit | |||
| 転送指示 | 患者を別の病棟または別のレベルのケアに移すためのリクエストです。システムでは「ベッドリクエスト」または「転送オーダー」として記録されます。 | ||
| その重要性 「Average Inter-Ward Transfer Time」の開始点です。転棟の臨床的決定とベッドの物流上の利用可能性を区別します。 取得元
取得 医師が転送オーダーを入力した際に記録されます。 イベントタイプ explicit | |||
| 退院指示署名済み | 医師による患者の正式な退院許可。これはEpicにおける特定のオーダー入力です。 | ||
| その重要性 「退院計画と実行」における重要なマイルストーンです。このイベントと実際の退院との間のギャップは、事務処理の遅延を表します。 取得元 ORDER_PROCにおいてtypeが'Discharge Patient'の場合。 取得 医師が退院指示に署名した際に記録されます。 イベントタイプ explicit | |||
| 退院計画開始 | 患者の退院準備活動の開始。ケース管理文書または特定の「退院」オーダータイプを通じて記録されます。 | ||
| その重要性 「退院計画と実行」ダッシュボードの鍵。早期開始は入院期間の短縮と相関があります。 取得元
取得 退院ナビゲーターまたはケース管理ノートとの最初のやり取りから推測されます。 イベントタイプ inferred | |||
抽出ガイド
ステップ
- Epic Hyperspaceにログインし、AnalyticsまたはMy ReportsアクティビティからReporting Workbench(RWB)を起動します。
- 新規レポートを作成するには、ライブラリタブを選択し、テンプレート**「Encounter Search」または「Patient Encounters」**を検索します。このテンプレートを使用すると、CSN(Contact Serial Number)で識別される連絡先レベルの詳細を取得できます。
- 基準を設定(設定タブ):
- 日付範囲(例:退院日 = 過去90日)を設定して、完了したエピソードを取得します。
- 受診タイプ(例:「入院受診」、「緊急」)でフィルタリングし、関連性のない外来受診を除外します。
- 特定のスコープが必要な場合は、部門または施設でフィルタリングします。
- 表示列を設定(表示タブ):
- これは重要な抽出ステップです。必要なアクティビティのタイムスタンプに対応する特定の列を検索して追加する必要があります。
- 患者識別子を追加:
CSN(患者エピソード)、MRN(患者ID)。 - 人口統計/属性を追加:
Department、Discharge Disposition、Primary Diagnosis Code、Provider。 - タイムスタンプ列を追加:
Admission Time、Triage End Time、Discharge Time、Discharge Order Time、First Med Admin Timeなどの列を検索して追加します(正確なマッピングについては、クエリ/設定セクションを参照してください)。
- レポートを実行し、プレビューウィンドウで結果を確認します。
- データをエクスポート:
- ツールバー > エクスポートをクリックします。
- CSVまたは**テキスト(タブ区切り)**形式を選択します。
- 「列ヘッダーを含める」がチェックされていることを確認します。
- ファイルを
Raw_Epic_Extract.csvとして保存します。
- データ変換(重要):
- RWBエクスポートは、「ワイド」データセット(患者エピソードごとに1行、複数のタイムスタンプ列)を生成します。
- 各タイムスタンプ列がイベントログ内の個別の行になるように、このデータをアンピボット(再整形)する必要があります。
- 最終ファイルに
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の「作成」および「エクスポート」セキュリティポイントが必要です。
- パフォーマンス:大規模な履歴範囲を検索する場合は、オフピーク時に実行してください。
- 粒度:この方法は、「受診レベル」の要約タイムスタンプ(例:「初回投薬管理」)を提供します。特定の「Audit」テンプレートが使用されない限り、すべてのループ(例:投与されたすべての錠剤)は抽出されません。これはこのユースケースではまれです。
a クエリ例 config
[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)をスキャンします。適切なインデックスが使用されているか、オフピーク時に実行されているかを確認してください。
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