您的患者就诊旅程数据模板
您的患者就诊旅程数据模板
- 用于临床背景分析的推荐属性
- 用于跟踪的关键流程里程碑
- Epic电子病历的具体数据提取指南
患者旅程属性
| 名称 | 说明 | ||
|---|---|---|---|
| 事件时间戳 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中,这通常对应Contact Serial Number(CSN)或Encounter ID。 分析此属性可以重建端到端的患者就诊历程,将分诊、诊断、治疗和出院活动关联为一个完整的流程实例。 为什么重要 它是将不同事件关联到同一流程案例的基础键。 获取位置 Epic Clarity表:PAT_ENC,列:PAT_ENC_CSN_ID 示例 200459112200459113200459114200459115 | |||
| 活动名称 ActivityName | 执行的具体临床或行政操作。 | ||
| 说明 此属性记录患者就诊过程中发生的事件名称,例如“患者已登记”“已给药”或“已签署出院医嘱”。它是定义顺序流的核心元素。 在分析中,此字段构成流程图的节点。它来源于EHR中的各种事务代码和医嘱状态,用于生成易于理解的事件日志。 为什么重要 它定义流程步骤,并支持工作流可视化。 获取位置 来源于CLARITY_ADT、ORDER_PROC和ORDER_MED表。 示例 分诊已完成诊断检查已下单患者已出院药物已给药 | |||
| 上次数据更新 LastDataUpdate | 数据提取或上次刷新的时间戳。 | ||
| 说明 此属性表示记录最近一次由ETL管道处理的时间。它不同于事件时间戳,可用于监控数据新鲜度。 分析人员可据此判断仪表板是否反映实时情况,或是否存在影响Triage Wait Times等KPI准确性的数据延迟。 为什么重要 它有助于评估流程挖掘数据的时效性和可靠性。 获取位置 ETL系统时间戳。 示例 2023-10-27T23:59:59Z2023-10-28T06:00:00Z | |||
| 来源系统 SourceSystem | 数据的记录系统,通常为Epic EHR。 | ||
| 说明 此属性标识数据来源。在当前视图中通常为“Epic EHR”,但当数据与其他系统混合时也很有用,例如独立的LIS(实验室信息系统)或计费系统。 在分析中,它确保数据血缘清晰;如果某些事件相较源系统缺失或格式异常,也有助于排查问题。 为什么重要 它提供数据来源的可追溯性和上下文。 获取位置 硬编码,或来源于连接字符串配置。 示例 Epic EHREpic ClarityEpic Caboodle | |||
| 主要诊断代码 PrimaryDiagnosisCode | 表示主要诊断的ICD-10代码或内部代码。 | ||
| 说明 此属性记录患者已确认的医疗状况,通常在“Diagnosis Confirmed”活动中填充。 它用于按临床状况对案例分组,以支持Clinical Protocol Compliance View。映射到“Product”后,分析人员可以了解不同医疗状况下护理“生产”方式的差异。 为什么重要 它按临床相似性对案例分组,以支持方案分析。 获取位置 Epic Clarity表:PAT_ENC_DX,列:DX_ID 示例 J18.9I21.9E11.9 | |||
| 事件结束时间 EventEndTime | 活动完成时的时间戳。 | ||
| 说明 许多事件是瞬时发生的,但“诊断检查已完成”或“会诊已完成”等活动具有持续时间。此属性记录活动完成时间。 它支持计算主动处理时间与等待时间,这对Diagnostic Service Cycle Times仪表板尤其重要。 为什么重要 它支持计算活动时长和资源利用率。 获取位置 有关ORDER_PROC中的具体结束时间列,请参阅Epic EHR文档。 示例 2023-10-15T09:45:00Z2023-10-16T15:00:00Z | |||
| 再入院标记 ReadmissionFlag | 表示患者是否在30天内意外返回。 | ||
| 说明 此布尔属性标识该就诊事件之后,患者是否在30天内再次发生非计划入院。它是30-Day Unplanned Readmission Rate KPI的核心。 在分析中,它是重要的结果变量。对于标记为“True”的流程路径,分析人员会进一步查找出院计划阶段的根因。 为什么重要 它用于识别出院流程失效和护理质量问题。 获取位置 通过SQL查询同一MRN对应的后续就诊事件计算得出。 示例 truefalse | |||
| 出院去向 DischargeDisposition | 患者出院后的去向(回家、SNF、死亡)。 | ||
| 说明 此属性记录患者离开医院后的去向,在“Patient Discharged”活动中采集。 它是Readmission Risk仪表板的重要依据,因为出院至专业护理机构(SNF)的患者与回家的患者具有不同的再入院特征。 为什么重要 它为护理流程结果提供上下文。 获取位置 Epic Clarity表:PAT_ENC,列:DISCH_DISP_C 示例 家中专业护理机构家庭医疗护理 | |||
| 分诊紧急程度等级 TriageAcuityLevel | 患者分诊时获得的严重程度评分。 | ||
| 说明 此属性表示患者病情的紧急程度,通常采用分级标准,例如ESI 1至5级。它在“Triage Completed”活动中记录。 它支持Resource Intensity by Severity Score仪表板中的分段分析。高紧急程度患者与低紧急程度患者遵循的流程路径不同,该字段有助于区分这些变体。 为什么重要 它根据紧急程度和预期资源消耗对流程进行分段。 获取位置 有关ED日志中的Acuity字段,请参阅Epic EHR文档。 示例 1-复苏2-紧急3-急迫 | |||
| 就诊类型 EncounterType | 患者就诊的分类,例如住院或急诊。 | ||
| 说明 此属性对患者就诊事件的性质进行分类。常见值包括“急诊”“住院”“门诊”或“虚拟就诊”。 该字段映射到“CaseType”,是筛选分析的基础。例如,Discharge Planning仪表板主要适用于住院就诊,而Triage仅适用于急诊。 为什么重要 它提供流程实例的高层次上下文。 获取位置 Epic Clarity表:PAT_ENC,列:ENC_TYPE_C 示例 急诊医院门诊住院 | |||
| 患者MRN PatientMrn | 用于标识患者的医疗记录号。 | ||
| 说明 MRN是患者在整个医疗系统中的唯一标识符,与就诊事件ID不同。它支持跨多次就诊追踪患者历史。 此属性用于识别再入院,并为Readmission Risk仪表板关联不同就诊事件。在通用模型中,它映射到“Customer”。 为什么重要 它对于识别重复就诊和分析患者历史至关重要。 获取位置 Epic Clarity表:PATIENT,列:PAT_ID或PAT_MRN_ID 示例 MRN-882910MRN-112003MRN-554211 | |||
| 服务提供者ID ProviderId | 执行活动的用户或临床人员标识符。 | ||
| 说明 此属性记录负责该事件的员工唯一ID,例如执行给药的护士或签署出院医嘱的医生。 它映射到通用属性“User”,用于分析资源差异和工作负载。对于自动化活动,该字段可能是系统用户ID。 为什么重要 它支持分析不同员工在绩效和工作负载方面的差异。 获取位置 Epic Clarity表:CLARITY_EMP,列:USER_ID 示例 EMP10023DOC5592系统 | |||
| 科室名称 DepartmentName | 活动发生所在的医院单元或科室。 | ||
| 说明 此属性标识事件发生的职能位置,例如“急诊科”“放射科”或“普通外科病房”。它是Internal Ward Transfer Analysis的重要依据。 数据可按科室对流程图进行分段,帮助管理人员区分本单元特有的瓶颈与全院系统性问题。 为什么重要 它支持按组织筛选和交接分析。 获取位置 Epic Clarity表:CLARITY_DEP,列:DEPARTMENT_NAME 示例 急诊科放射科ICU儿科 | |||
| 区域名称 RegionName | 地理区域或医院院区。 | ||
| 说明 对于拥有多个院区的医疗系统,此属性标识医疗机构所在位置,并支持比较不同医院院区的绩效。 映射到“Region”后,可进行多院区基准比较,了解哪家医院的Triage Throughput表现更好。 为什么重要 它支持在医疗网络内不同医疗机构之间进行基准比较。 获取位置 来源于科室或医疗机构主数据。 示例 北校区市中心西翼 | |||
| 开单医生专业 OrderingProviderSpecialty | 申请会诊或检查的医生所属专业。 | ||
| 说明 此属性记录开单医生所属的科室或专业,例如“心脏科”“肿瘤科”。它用于Specialist Consultation Latency仪表板。 它有助于分析某些专业是否比其他专业面临更长的院内服务等待时间,从而发现特定服务线中的潜在偏差或资源短缺。 为什么重要 它按专业细分诊断和会诊服务需求。 获取位置 有关医生主数据,请参阅Epic EHR文档。 示例 心脏科内科骨科 | |||
| 排班方式 SchedulingMethod | 表示后续预约的预订方式。 | ||
| 说明 此属性记录预约所使用的渠道,例如“MyChart”“Cadence Auto”或“前台”。它是Outpatient Follow Up Automation Status仪表板的重要数据。 如果该值表示系统渠道或患者主导的数字渠道,则“IsAutomated”标记可设为true,从而反映数字化转型举措的成效。 为什么重要 它跟踪自动化或自助工具的采用情况。 获取位置 有关预约创建来源,请参阅Epic EHR文档。 示例 MyChartCadence电话现场就诊 | |||
| 方案遵循状态 ProtocolAdherenceStatus | 表示案例是否遵循标准临床路径的状态。 | ||
| 说明 此属性将案例中的活动顺序与定义好的参考模型(标准操作规程)进行比较。它支持Clinical Protocol Compliance View。 取值可能包括“合规”“跳过步骤”或“顺序错误”。临床负责人无需逐一检查流程图,即可快速筛选不合规案例。 为什么重要 它可以快速识别偏离循证护理标准的情况。 获取位置 在流程挖掘工具中计算,或预先通过SQL处理。 示例 符合要求偏离规范不完整 | |||
| 是否自动排班 IsAutomatedScheduling | 表示排班是否在没有员工介入的情况下完成。 | ||
| 说明 此布尔属性根据Scheduling Method派生。如果预约通过MyChart或自动化Cadence工作流创建,则该值为True。 它直接支持Follow-up Scheduling Automation Rate KPI,帮助运营负责人了解技术分担了多少行政工作。 为什么重要 它衡量流程自动化成效。 获取位置 来源于SchedulingMethod。 示例 truefalse | |||
| 诊断医嘱成本 DiagnosticOrderCost | 与诊断检查或操作相关的内部成本。 | ||
| 说明 此属性为“Diagnostic Test Performed”活动分配财务价值,从而将财务维度叠加到流程图上。 它不是主要临床指标,但可帮助管理部门了解不同流程变体的财务影响,尤其是涉及高资源消耗严重程度评分的变体。 为什么重要 它为流程效率分析增加财务维度。 获取位置 与操作关联的计费或成本核算表。 示例 150.001200.0045.00 | |||
| 转运等待时长 TransferWaitDuration | 从转运医嘱到实际转运之间经过的时间。 | ||
| 说明 此指标衡量“Transfer Ordered”和“Patient Transferred”之间的时间差,是Internal Ward Transfer Analysis的主要数据点。 该值较高表示患者正在等待床位,这会阻塞急诊科上游流程。 为什么重要 它揭示患者流转中的物流和容量瓶颈。 获取位置 根据医嘱事件和转运事件的时间戳差值计算。 示例 2小时30分钟45分钟12小时 | |||
患者旅程活动
| 活动 | 说明 | ||
|---|---|---|---|
| 分诊已完成 | 完成初始护理评估或分诊评估。通常在提交分诊流程表,或分诊状态变更为“Complete”时记录。 | ||
| 为什么重要 对于“Triage Throughput and Wait Times”仪表板衡量前端效率至关重要。此处的延误会影响整个护理路径。 获取位置 PAT_ENC_HSP.TRIAGE_END_TIME,或特定Flowsheet行提交的时间戳(FLO_MEASUREMENT)。 采集 分诊文档签署或状态字段更新时记录 事件类型 explicit | |||
| 患者已出院 | 正式关闭住院就诊记录,患者从Census中完成虚拟出院时记录。 | ||
| 为什么重要 “Length of Stay”计算中患者流程的正式终点,也是“Patient Flow Variant Discovery”的必要数据。 获取位置 ADT Feed(Event A03),或PAT_ENC_HSP.DISCH_TIME。 采集 行政人员完成出院工作流时记录 事件类型 explicit | |||
| 患者已登记 | 系统首次创建患者就诊记录,标志着护理流程开始。当患者抵达登记台或急诊并在Epic中完成登记时,该事件会被明确记录。 | ||
| 为什么重要 为整个Patient Journey建立锚点,并支持计算总住院时长。是“Triage Throughput and Wait Times”仪表板的必要数据。 获取位置 ADT Feed(Event A04或A01),或Clarity表PAT_ENC(创建HSP_ACCOUNT_ID)。 采集 执行“Check In”或“Admit”交易时记录 事件类型 explicit | |||
| 诊断已确认 | 将确认的诊断录入患者问题列表或就诊诊断字段,代表调查阶段结束。 | ||
| 为什么重要 “Time to Definitive Diagnosis”KPI所需数据,标志着从评估转向有针对性的治疗。 获取位置 PAT_ENC_DX表,或与该次就诊关联的PROBLEM_LIST更新。 采集 临床医生在Encounter Diagnosis活动中新增条目时记录 事件类型 explicit | |||
| 会诊已完成 | 完成专科评估,通常在签署Consult Note或关闭会诊医嘱时标记。 | ||
| 为什么重要 “Specialist Consultation Lead Time”的终点,表示专家意见已提供,护理计划可以继续执行。 获取位置 HNO_NOTE_TEXT(类型为Consult的已提交记录),或ORDER_PROC状态变更为Completed。 采集 根据Consult Note创建时间或医嘱状态更新时间推断 事件类型 inferred | |||
| 出院医嘱已签署 | 医生正式授权患者离院,在Epic中作为特定医嘱录入。 | ||
| 为什么重要 “Discharge Planning and Execution”中的关键里程碑。该事件与实际离院之间的间隔代表行政处理延迟。 获取位置 ORDER_PROC中类型为“Discharge Patient”的记录。 采集 MD签署出院医嘱时记录 事件类型 explicit | |||
| 出院计划已启动 | 开始开展患者出院准备活动,通过Case Management文档或特定“Discharge”医嘱类型记录。 | ||
| 为什么重要 “Discharge Planning and Execution”仪表板的关键事件。尽早启动通常与缩短住院时长相关。 获取位置 创建HSP_DISCH_PLAN,或Case Manager/Social Worker首次记录。 采集 根据首次与Discharge Navigator交互或Case Mgmt记录推断 事件类型 inferred | |||
| 后续就诊已安排 | 为患者预约未来的门诊就诊,在与患者记录关联的Cadence排程模块中记录。 | ||
| 为什么重要 支持“Follow-up Scheduling Automation Rate”,确保护理连续性并帮助预防再入院。 获取位置 与患者ID关联、在接近出院时间创建的PAT_ENC_APPT。 采集 Cadence中确认就诊时段时记录 事件类型 explicit | |||
| 已下达转运医嘱 | 将患者转移至其他单元或护理级别的请求,在系统中记录为“Bed Request”或“Transfer Order”。 | ||
| 为什么重要 “Average Inter-Ward Transfer Time”的起点,用于区分临床转运决策与床位实际可用之间的时间。 获取位置 ADT_TRANSFER_ORDER或ORDER_PROC(Bed Request)。 采集 医生录入转运医嘱时记录 事件类型 explicit | |||
| 已请求会诊 | 为患者下达专科评估医嘱。在Epic中记录为特定的“Consult”程序医嘱类型。 | ||
| 为什么重要 “Specialist Consultation Lead Time”KPI的起点,有助于识别特定医学专科的资源短缺。 获取位置 ORDER_PROC中ORDER_CLASS = “Consult”,或特定转诊医嘱。 采集 会诊医嘱签署时记录 事件类型 explicit | |||
| 患者已转运 | 将患者实际转移至新的科室或病区,通过ADT转运事件记录。 | ||
| 为什么重要 “Average Inter-Ward Transfer Time”的终点,支持“Internal Ward Transfer Analysis”,用于发现医院物流中的瓶颈。 获取位置 ADT Feed(Event A02),或PAT_ENC_HSP_TRANSACTION(Transfer In)。 采集 病区文员在Census中更新患者位置时记录 事件类型 explicit | |||
| 护理计划已启动 | 为患者分配特定临床路径或协议。当标准Order Set或Care Plan应用于就诊上下文时记录。 | ||
| 为什么重要 支持“Clinical Protocol Compliance View”,标记遵循标准护理的意图。此后可从该时间点开始衡量后续计划步骤的偏差。 获取位置 ORDER_SET_BKG或Care Plan表,表明协议已关联至该次就诊。 采集 临床医生选择并签署Order Set时记录 事件类型 explicit | |||
| 药物已给药 | 护士或医疗服务人员向患者给药的操作,在Medication Administration Record(MAR)中记录。 | ||
| 为什么重要 “Medication Delivery Performance”仪表板的核心事件,用于跟踪“Treatment Plan Developed”的遵循情况。 获取位置 MAR_ADMIN_INFO表,具体包括action为“Given”或“New Bag”的事件。 采集 护士扫描患者腕带和药物(BCMA)时记录 事件类型 explicit | |||
| 诊断检查已下单 | 录入影像学检查(Radiology)或实验室服务医嘱。当医生在CPOE系统中录入并签署医嘱时记录。 | ||
| 为什么重要 “Diagnostic Service Cycle Times”仪表板的起点。此处数量较高但没有相应结果,通常说明存在瓶颈。 获取位置 ORDER_PROC表,其中ORDER_TYPE为Lab或Imaging/Radiology。 采集 医嘱状态变为“Signed”或“Active”时记录 事件类型 explicit | |||
| 诊断检查已执行 | 实际执行诊断检查或提交检查结果。实验室检查在样本处理时记录,影像检查在扫描完成时记录。 | ||
| 为什么重要 “Mean Diagnostic Test Cycle Time”KPI的终点。对于了解临床决策支持服务中的延误至关重要。 获取位置 ORDER_PROC.PROC_END_TIME,或ORDER_STAT_HISTORY中状态变为“Completed”或“Resulted”的记录。 采集 技术人员完成任务或结果接口接收数据时记录 事件类型 explicit | |||
数据提取指南
步骤
- 登录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导出的是“宽”数据集,即每个患者就诊事件一行,并包含多个时间戳列。
- 您必须将数据逆透视(重塑),使每个时间戳列转换为事件日志中的独立行。
- 创建包含以下列的最终文件:
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”模板,否则不会提取每个循环中的全部记录,例如每一粒药物的给药记录,而这类模板并不常用于此场景。
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:运行完整脚本前,先执行小范围探索查询,确定您所在Epic实例中Labs、Radiology、Consults和Transfers对应的
ORDER_TYPE_C值,因为这些自定义列表(类别列表)会因医院而异。配置时间窗口:找到所提供SQL脚本中按
CONTACT_DATE或HOSP_ADMSN_TIME筛选的WHERE子句,并调整为所需的数据提取窗口,例如最近6个月。映射自定义Flowsheet(可选):如果您需要获取主就诊表中没有的精确分诊或出院计划时间戳,请确定这些字段对应的
FLO_MEAS_ID(Flowsheet Measure ID),并更新脚本中的占位部分。执行查询:在SQL客户端中运行完整SQL脚本,例如SQL Server Management Studio或Oracle SQL Developer。脚本使用
UNION ALL将不同临床事件合并为统一的事件日志结构。后处理:查询将返回平面列表。请确认
EventTimestamp不为空。如果中间件有要求,请将数据库特定的日期时间格式转换为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进行核实)。 - 订单类型:需要根据本地
ZC_ORDER_TYPE配置,自定义Labs、Imaging和Consults对应的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 立即优化患者就诊旅程,缩短周期时间
识别临床瓶颈,将周期时间缩短30%。
无需信用卡……几分钟即可完成设置。