您的患者就诊流程数据模板
您的患者就诊流程数据模板
- 推荐的临床属性
- 关键流程里程碑
- MEDITECH数据提取指南
患者旅程属性
| 名称 | 说明 | ||
|---|---|---|---|
| 事件时间戳 EventTimestamp | 活动发生的具体日期和时间。 | ||
| 说明 该属性记录活动发生的准确时刻,用于按时间顺序排列事件,并计算流程步骤之间的时长指标。 要准确分析等待时间,必须使用高精度时间戳,例如分诊到评估之间的时长,或诊断结果的周转时间。 为什么重要 用于排列事件,并计算周期时间和处理量。 获取位置 源表中的交易日期和时间列。 示例 2023-10-15T08:30:00Z2023-10-15T09:15:22Z2023-10-16T14:45:00Z | |||
| 最后更新时间 LastDataUpdate | 数据最后一次提取或刷新的时间戳。 | ||
| 说明 表示记录最后一次处理或加载到流程挖掘工具的时间,有助于审计数据新鲜度,确保分析反映系统的最新状态。 它不同于事件时间戳,反映的是技术数据管道时间,而非临床事件发生时间。 为什么重要 对于数据治理以及确保基于最新数据开展分析至关重要。 获取位置 ETL执行时的系统日期。 示例 2023-11-01T00:00:00Z2023-11-02T12:00:00Z | |||
| 患者就诊事件 PatientEpisode | 特定患者护理或就诊期间的唯一标识。 | ||
| 说明 Patient Episode是流程分析的核心案例标识符。它将单次住院或门诊就诊相关的所有临床、行政和财务事件归入同一条完整旅程。 在MEDITECH系统中,它通常对应Account Number或Visit ID。该属性是从登记到出院重构患者诊疗旅程的基础,可用于计算住院时长和分析临床路径。 为什么重要 这是将不同事件关联到同一流程实例所必需的案例主键。 获取位置 MEDITECH Admissions或Registration模块,通常为Account Number字段。 示例 V100938475AC29384755E993847211O229384711 | |||
| 活动名称 ActivityName | 已执行的具体临床或行政操作。 | ||
| 说明 该属性表示患者诊疗旅程中发生的事件或任务名称,记录“Patient Registered”“Medication Administered”或“Discharge Order Written”等具体步骤。 准确识别活动对于映射流程至关重要。这些值通常来源于电子健康记录中的交易代码、医嘱状态或已记录的干预措施。 为什么重要 定义流程步骤,是可视化流程图的必要字段。 获取位置 来源于各种交易日志(OE Orders、NUR Interventions、ADM Events)。 示例 患者已登记分诊完成已执行用药诊断结果已验证 | |||
| 源系统 SourceSystem | 数据来源系统的标识符。 | ||
| 说明 用于标识提取事件数据的MEDITECH实例或具体模块。在多医院环境中,它有助于区分不同医疗机构或系统版本的数据。 对于单一系统提取,该属性通常保持不变;但在合并数据、构建医院网络统一视图时至关重要。 为什么重要 确保多系统环境中的数据血缘和可追溯性。 获取位置 在提取过程中硬编码,或通过系统ID配置。 示例 MEDITECH_ExpanseMEDITECH_6.1Hospital_A_Main | |||
| 主治医务人员 AttendingProvider | 负责该活动的主要临床医务人员或服务提供者。 | ||
| 说明 记录执行任务或负责护理的医生、护士或技术人员的姓名或ID。该属性支持“治疗计划制定速度”仪表板,可将速度和效率指标归因到具体员工或角色。 它还支持资源分析,帮助平衡工作量并识别临床人员的培训需求。 为什么重要 支持资源绩效分析和工作量平衡。 获取位置 活动日志中的Provider或User字段。 示例 Smith医生Jones注册护士Adams技术员 | |||
| 主要诊断 PrimaryDiagnosis | 患者此次就诊事件中确定的主要疾病或病情。 | ||
| 说明 包含此次就诊主要原因对应的ICD-10代码或描述,是“临床路径变体分析”的基础。 按主要诊断对病例分组后,临床管理人员可以将实际治疗路径与该病情对应的理想临床路径进行比较。 为什么重要 对病例分组并分析临床路径不可或缺。 获取位置 病历或编码模块。 示例 J18.9-肺炎I21.9-急性心肌梗死S72.0-股骨骨折 | |||
| 出院去向 DischargeDisposition | 患者出院时的去向或状态。 | ||
| 说明 表示患者结束此次就诊事件后的去向,例如“回家”“专业护理机构”“居家护理”或“死亡”。这是“出院计划优化”仪表板的重要结果指标。 通过分析该字段,可以判断安排出院后续护理是否延误,并导致住院时长增加。 为什么重要 用于分析住院时长和再入院风险的重要结果指标。 获取位置 出院编码或登记界面。 示例 出院回家转入短期综合医院死亡未经医嘱离院 | |||
| 分诊紧急程度 TriageAcuityLevel | 患者分诊时获得的严重程度评级。 | ||
| 说明 用于表示患者病情的紧急程度,通常采用分级标准,例如1至5级,其中1级为危重。该属性是“急诊科流程分析”的核心。 分析人员可据此将等待时间与患者严重程度关联,确保危重患者得到有效优先处理。 为什么重要 对于分析急诊优先级和安全合规至关重要。 获取位置 急诊或分诊护理评估界面。 示例 1-复苏2-紧急3-加急4-较不紧急 | |||
| 医院科室 HospitalDepartment | 活动发生所在的具体单元或科室。 | ||
| 说明 用于标识负责该活动的职能单元,例如“急诊”“放射科”“ICU”或“普通病房”。该属性对于“科室资源吞吐量”仪表板至关重要。 您可以按单元细分绩效指标,从而定位内部转运和资源利用中的瓶颈。 为什么重要 对于组织分析以及识别特定单元中的瓶颈至关重要。 获取位置 交易表中的位置或科室字段。 示例 急诊科放射科重症监护室外科病房3 | |||
| 患者类型 PatientType | 患者就诊类型分类,例如住院、门诊或急诊。 | ||
| 说明 用于分类医院就诊性质。常见值包括“住院”“门诊”“急诊”或“观察”。由于不同类型的护理标准和预期时长差异显著,该分类是筛选和比较流程的基础。 该字段可用于“出院计划优化”仪表板,按类型细分预期住院时长。 为什么重要 比较流程时进行基础分组,例如住院与门诊。 获取位置 入院或就诊表,例如AdmVisits.Status。 示例 住院患者急诊门诊手术留观 | |||
| 是否再入院 IsReadmission | 用于标记此次就诊事件是否发生在上次出院后30天内。 | ||
| 说明 布尔属性。如果患者当前登记日期距上一次就诊事件的出院日期不超过30天,则返回true。该属性支持“再入院与护理质量”仪表板。 识别再入院病例后,分析人员可以追溯上一次就诊事件,查找出院计划或后续护理中的缺口。 为什么重要 影响报销和患者结果的关键质量指标。 获取位置 通过比较同一MedicalRecordNumber对应的当前StartTime与上一个Case的EndTime计算得出。 示例 truefalse | |||
| 病历号 MedicalRecordNumber | 用于标识患者在所有就诊记录中的唯一编号。 | ||
| 说明 病历号(MRN)可在医疗机构内唯一标识患者,与特定就诊事件的ID不同。分析人员可借此关联同一患者在不同时间发生的多个就诊事件。 该属性对于“再入院与护理质量”仪表板至关重要,可帮助识别出院后30天内再次入院的患者。 为什么重要 支持跨就诊事件分析和以患者为中心的视图。 获取位置 患者主索引或登记表。 示例 MRN-100293MRN-55928388291002 | |||
| 入院来源 AdmitSource | 患者入院前所在的位置或来源,例如家中、转院或转诊。 | ||
| 说明 描述患者入院来源,例如“医生转诊”“急诊室”或“其他医院转入”,帮助了解患者如何进入系统。 这有助于分析流入模式及其对“急诊科流程分析”和资源规划的影响。 为什么重要 帮助了解患者流入情况和需求渠道。 获取位置 入院登记数据。 示例 急诊室诊所转诊从SNF转入 | |||
| 分诊等待时间 TriageWaitTime | 从登记到完成分诊之间的持续时间。 | ||
| 说明 计算“患者登记”事件与“分诊完成”事件之间的时长,直接用于“平均分诊周转时间”KPI。 监控该时长有助于急诊管理人员在高峰时段调整人员配置,确保满足患者安全标准。 为什么重要 急诊科的重要运营指标。 获取位置 根据特定活动时间戳之间的差值计算。 示例 15分钟1小时20分钟 | |||
| 医嘱类别 OrderCategory | 临床医嘱分类,例如检验、放射或会诊。 | ||
| 说明 将医嘱归入更宽泛的类别,例如“检验”“放射”“膳食”或“会诊”。这对于“诊断服务周转时间”仪表板至关重要。 您可以分别分析影像检查和血液检验的工作流及周期时间,因为两者通常存在不同的瓶颈。 为什么重要 对诊断和治疗工作流进行分组。 获取位置 医嘱录入(OE)模块中的类别字段。 示例 检验科放射科护理药房 | |||
| 收费金额 ChargeAmount | 与特定活动或服务相关的财务金额。 | ||
| 说明 表示特定事件产生的成本或收费金额,例如检查费或床位费。虽然该字段主要用于财务分析,但也能反映资源投入程度。 汇总后,它有助于了解流程差异的财务影响,但当前视图主要关注临床流程。 为什么重要 为流程分析增加财务维度。 获取位置 计费或BAR(计费与应收账款)模块。 示例 150.001200.5045.00 | |||
| 是否违反遵循要求 IsAdherenceViolation | 用于标记病例是否偏离标准临床路径。 | ||
| 说明 如果活动顺序与患者主要诊断对应的参考模型不一致,则将该布尔标记设为true。该属性支持“临床路径变体分析”。 您可以快速筛选“不符合要求”的病例,调查未遵循标准护理流程的原因。 为什么重要 快速识别流程偏差和变体。 获取位置 通过一致性检查算法计算得出。 示例 truefalse | |||
| 药品名称 MedicationName | 所用药品的名称。 | ||
| 说明 记录“给药”事件中涉及的具体药品,是“用药合规”仪表板所必需的数据。 护理管理人员可据此确认高风险或时间敏感药物,例如脓毒症抗生素,是否在适当的治疗时间窗内给药。 为什么重要 临床合规和安全分析所必需。 获取位置 药房(PHA)或床旁核查(BMV)模块。 示例 对乙酰氨基酚万古霉素肝素胰岛素 | |||
患者旅程活动
| 活动 | 说明 | ||
|---|---|---|---|
| 分诊完成 | 表示急诊科初始护理评估已完成,并确定患者的病情紧急程度和严重程度评分。 | ||
| 为什么重要 对于Emergency Department Flow Analysis仪表板至关重要,可用于衡量处理量和等待时间。 获取位置 MEDITECH EDM(Emergency Department Management)模块。根据EDM跟踪器中的状态变更,或Triage Assessment文档的时间戳推导。 采集 状态字段变更为Triaged时记录 事件类型 explicit | |||
| 已下达医嘱 | 记录临床人员提出的服务、药物或诊断检查请求,是后续临床活动的触发事件。 | ||
| 为什么重要 作为“Diagnostic Services Turnaround”KPI的起始点。将其与执行时间比较,可识别服务交付延迟。 获取位置 MEDITECH OE(Order Entry)模块。使用“OeOrders”表中的Order Date/Time字段获取。 采集 执行Order Enter交易时记录 事件类型 explicit | |||
| 已开立出院医嘱 | 医生签署授权患者出院医嘱的时间戳,标志着“Discharge Planning”阶段开始。 | ||
| 为什么重要 作为“Discharge Planning Lead Time”的起始点。该时间与实际离院时间之间的间隔代表运营低效。 获取位置 MEDITECH OE(Order Entry)。筛选Category = Discharge的医嘱。 采集 执行Order Enter交易时记录 事件类型 explicit | |||
| 已执行用药 | 记录护理人员实际向患者给药的情况,通常通过床旁条形码扫描获取。 | ||
| 为什么重要 支持“Medication Administration Compliance”分析,可识别护理单元中的安全风险和工作流中断。 获取位置 MEDITECH PHA(Pharmacy)或eMAR(Electronic Medication Administration Record)。使用给药历史中的“AdminDateTime”。 采集 执行Med Admin交易时记录 事件类型 explicit | |||
| 患者已出院 | 表示就诊记录已完成行政关闭,患者已实际离院,床位已释放。 | ||
| 为什么重要 流程正式结束的节点,用于计算最终住院时长并定义30天再入院窗口。 获取位置 MEDITECH ADM(Admissions)。使用就诊记录中的“DischargeDateTime”字段。 采集 执行Discharge Patient交易时记录 事件类型 explicit | |||
| 患者已登记 | 此事件表示系统中已完成患者诊疗过程或就诊记录的行政创建,记录患者进入MEDITECH ADM(Admissions)模块的初始节点。 | ||
| 为什么重要 用于确定患者诊疗旅程的起点并计算周期时间,也是计算总住院时长的必要节点。 获取位置 MEDITECH ADM模块。来源为“Admissions”表,具体使用“AdmitDateTime”或交易日志创建时间戳。 采集 执行New Visit交易时记录 事件类型 explicit | |||
| 患者已转运 | 表示患者从一个地点(Unit/Room/Bed)转移到另一个地点,跟踪患者在医院内的流转情况。 | ||
| 为什么重要 是“Internal Transfer Bottlenecks”的关键指标。转运时长过长通常表明资源竞争或转运人员延迟。 获取位置 MEDITECH ADM(Admissions)。来源为“Location History”或“RoomBed”交易日志。 采集 执行Transfer Patient交易时记录 事件类型 explicit | |||
| 诊断已记录 | 临床人员将编码诊断(ICD-10)录入患者记录的节点,通常会触发特定临床路径。 | ||
| 为什么重要 通过对案例分类,支持“Clinical Pathway Variant Analysis”,对于患者分组比较至关重要。 获取位置 MEDITECH ABS(Abstracting)或Medical Records模块。诊断代码与账户关联时记录。 采集 执行Diagnosis Enter交易时记录 事件类型 explicit | |||
| 诊断结果已验证 | 表示诊断检查(实验室或放射学)已完成,且结果已由技术人员或放射科医生签署确认,从而完成诊断医嘱闭环。 | ||
| 为什么重要 这是“Diagnostic Services Turnaround”的终点,对于分析辅助科室的瓶颈至关重要。 获取位置 MEDITECH LAB或ITS(Imaging and Therapeutic Services)模块。根据结果状态变更为Verified或Signed获取。 采集 状态字段变更为Verified时记录 事件类型 explicit | |||
| 会诊已完成 | 表示专科评估已完成,通常根据特定文档类型(例如“Cardiology Consult Note”)的归档推断。 | ||
| 为什么重要 用于衡量专科响应速度的终点,对于确保护理及时推进至关重要。 获取位置 MEDITECH PCM(Provider Order Management)或EMR模块。根据特定标题文档的创建时间戳推断。 采集 比较前后状态字段 事件类型 inferred | |||
| 会诊请求已发送 | 一种请求专科意见的特定医嘱类型,用于启动“Specialist Consultation Response”仪表板的计时。 | ||
| 为什么重要 用于识别多学科护理协作中的瓶颈。此处等待时间过长会延长住院时长。 获取位置 MEDITECH OE(Order Entry)。通过筛选“OeOrders”中Category = Consult的记录识别。 采集 执行Order Enter交易时记录 事件类型 explicit | |||
| 已采集标本 | 表示已完成用于实验室分析的生物样本采集,是连接医嘱下达与样本处理的活动。 | ||
| 为什么重要 这是诊断生命周期中经常导致延迟的细分步骤,有助于区分护理延迟和实验室延迟。 获取位置 MEDITECH LAB模块。通常在采血人员扫描条形码或将标本状态更新为Collected时记录。 采集 执行Collect Specimen交易时记录 事件类型 explicit | |||
| 已预约随访 | 为患者安排未来就诊,支持出院后的连续护理。 | ||
| 为什么重要 支持“Follow-up Appointment Scheduling”分析,并与较低的再入院率相关。 获取位置 MEDITECH SCH(Scheduling)。通过将出院日期附近创建的新Appointment记录与患者ID关联推断。 采集 通过比较Appointment Created Date与Discharge Date字段推导 事件类型 inferred | |||
| 护理计划已启动 | 表示已创建或分配特定的护理或跨学科护理计划,对应“Treatment Plan Developed”概念。 | ||
| 为什么重要 用于衡量“Treatment Plan Development Velocity”。此处的延迟通常表明临床决策存在缺口。 获取位置 MEDITECH PCS(Patient Care System)或Care Manager模块。使用标准Plan of Care应用于患者时的时间戳。 采集 执行Care Plan Add交易时记录 事件类型 explicit | |||
数据提取指南
步骤
确定数据仓库服务器:找到承载MEDITECH Data Repository(DR)的Microsoft SQL Server实例。该实例不同于事务型M-AT或基于文件的数据库。您需要只读凭据,通常为服务账户。
确定架构版本:MEDITECH DR结构在Magic、Client/Server(6.x)和Expanse之间略有差异。以下查询使用标准命名约定,例如AdmVisits、OeOrders。请在本地SQL Server Management Studio(SSMS)的对象资源管理器中验证这些表名。
定义范围:确定患者就诊的主表。根据您的DR配置,该表通常名为AdmVisits、RegAcct或AbstractData。查询使用AdmVisits作为Patient Episode的锚点。
准备SQL环境:打开SSMS并连接到DR。打开新的查询窗口。确保已切换到正确的数据库上下文,该数据库通常名为livedb或类似名称。
配置参数:在提供的SQL脚本中,替换日期范围占位符,例如“2023-01-01”,以及多院区DR中的机构标识符。
执行提取:运行完整的T-SQL脚本。脚本使用公用表表达式(CTE)先定义目标人群,然后通过UNION ALL合并多个数据源,创建标准化事件日志。
处理NULL属性:查询包含处理时间戳潜在NULL值的逻辑,在适用时使用COALESCE,并确保关键连接键(SourceID/VisitID)存在。
验证分诊和急诊数据:MEDITECH将急诊科数据存储在特定模块中。如果您要分析急诊工作流,请确保EdVisits或NurInterventions表已填充数据。
验证医嘱类别:查询根据Category urn或助记符区分一般医嘱、会诊医嘱和出院医嘱。您可能需要调整WHERE子句,以匹配所在机构的具体Mnemonic字典。
导出数据:结果返回后,在SSMS结果网格中右键单击,选择Save Results As CSV。确保包含表头。
最终格式检查:打开CSV,确认日期格式符合ISO 8601标准(YYYY-MM-DD HH:MM:SS),然后再导入ProcessMind。
配置
- 数据库访问:需要拥有MEDITECH DR SQL数据库的db_datareader权限。
- 日期范围:建议提取已出院患者3至6个月的数据,以确保周期完整。
- 机构筛选:如果DR包含多个机构的数据,请按FacilityID或SourceSystemID筛选BaseVisits CTE。
- Episode定义:脚本使用唯一VisitID(通常称为Account Number或Episode Number)作为Case ID。
- 性能:查询使用CTE锚点限制扫描范围。为获得最佳性能,请确保AdmVisits表在AdmitDate和DischargeDate上建立索引。
- 延迟:根据站点配置,Data Repository传输可能存在15分钟至24小时的延迟。请确认LastDataUpdate时间戳。
a 示例查询 sql
/* MEDITECH Data Repository T-SQL Extraction for ProcessMind */
/* Process: Patient Journey */
/* Dialect: T-SQL */
WITH BaseVisits AS (
/* Define the population: Discharged patients within a date range */
SELECT
V.VisitID,
V.PatientID,
V.AccountNumber AS MedicalRecordNumber,
V.AdmitDateTime,
V.DischargeDateTime,
V.FacilityID,
V.PatientType,
V.AttendingProviderID,
V.DischargeDisposition,
NULLIF(DATEDIFF(MINUTE, V.AdmitDateTime, V.DischargeDateTime), 0) / 1440.0 AS LengthOfStay,
/* Flag readmissions logic would go here, simplified as 0 for base script */
0 AS IsReadmission
FROM
[YourDatabaseName].[dbo].[AdmVisits] V
WHERE
V.DischargeDateTime >= '2023-01-01'
AND V.DischargeDateTime < '2023-04-01'
AND V.Status = 'DIS' /* Discharged Status */
),
PatientDiagnoses AS (
/* Helper CTE for Primary Diagnosis to avoid duplicates in joins */
SELECT
D.VisitID,
MAX(D.ICDCode) AS PrimaryDiagnosis
FROM
[YourDatabaseName].[dbo].[AbsDiagnoses] D
WHERE
D.Rank = 1 /* Primary Diagnosis Rank */
GROUP BY
D.VisitID
),
TriageData AS (
/* Helper CTE for Triage Acuity */
SELECT
T.VisitID,
MAX(T.AcuityLevel) AS TriageAcuityLevel
FROM
[YourDatabaseName].[dbo].[EdTriage] T
GROUP BY
T.VisitID
)
/* 1. Patient Registered */
SELECT
V.VisitID AS PatientEpisode,
'Patient Registered' AS ActivityName,
V.AdmitDateTime AS EventTimestamp,
'MEDITECH_ADM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
V.MedicalRecordNumber,
V.FacilityID AS HospitalDepartment,
V.AttendingProviderID AS AttendingProvider,
V.PatientType,
T.TriageAcuityLevel,
D.PrimaryDiagnosis,
V.DischargeDisposition,
V.LengthOfStay,
V.IsReadmission
FROM
BaseVisits V
LEFT JOIN PatientDiagnoses D ON V.VisitID = D.VisitID
LEFT JOIN TriageData T ON V.VisitID = T.VisitID
WHERE
V.AdmitDateTime IS NOT NULL
UNION ALL
/* 2. Triage Completed */
SELECT
V.VisitID AS PatientEpisode,
'Triage Completed' AS ActivityName,
ED.TriageDateTime AS EventTimestamp,
'MEDITECH_ED' AS SourceSystem,
GETDATE() AS LastDataUpdate,
V.MedicalRecordNumber,
'Emergency Department' AS HospitalDepartment,
ED.TriageNurseID AS AttendingProvider,
V.PatientType,
ED.AcuityLevel AS TriageAcuityLevel,
D.PrimaryDiagnosis,
V.DischargeDisposition,
V.LengthOfStay,
V.IsReadmission
FROM
[YourDatabaseName].[dbo].[EdTriage] ED
INNER JOIN BaseVisits V ON ED.VisitID = V.VisitID
LEFT JOIN PatientDiagnoses D ON V.VisitID = D.VisitID
WHERE
ED.TriageDateTime IS NOT NULL
UNION ALL
/* 3. Order Placed (General) */
SELECT
V.VisitID AS PatientEpisode,
'Order Placed' AS ActivityName,
O.OrderDateTime AS EventTimestamp,
'MEDITECH_OE' AS SourceSystem,
GETDATE() AS LastDataUpdate,
V.MedicalRecordNumber,
O.Department AS HospitalDepartment,
O.OrderingProviderID AS AttendingProvider,
V.PatientType,
T.TriageAcuityLevel,
D.PrimaryDiagnosis,
V.DischargeDisposition,
V.LengthOfStay,
V.IsReadmission
FROM
[YourDatabaseName].[dbo].[OeOrders] O
INNER JOIN BaseVisits V ON O.VisitID = V.VisitID
LEFT JOIN PatientDiagnoses D ON V.VisitID = D.VisitID
LEFT JOIN TriageData T ON V.VisitID = T.VisitID
WHERE
O.Category NOT IN ('CONSULT', 'DISCHARGE') /* Exclude specific types handled elsewhere */
UNION ALL
/* 4. Specimen Collected */
SELECT
V.VisitID AS PatientEpisode,
'Specimen Collected' AS ActivityName,
L.CollectionDateTime AS EventTimestamp,
'MEDITECH_LAB' AS SourceSystem,
GETDATE() AS LastDataUpdate,
V.MedicalRecordNumber,
'Laboratory' AS HospitalDepartment,
L.CollectedBy AS AttendingProvider,
V.PatientType,
T.TriageAcuityLevel,
D.PrimaryDiagnosis,
V.DischargeDisposition,
V.LengthOfStay,
V.IsReadmission
FROM
[YourDatabaseName].[dbo].[LabSpecimens] L
INNER JOIN BaseVisits V ON L.VisitID = V.VisitID
LEFT JOIN PatientDiagnoses D ON V.VisitID = D.VisitID
LEFT JOIN TriageData T ON V.VisitID = T.VisitID
WHERE
L.CollectionDateTime IS NOT NULL
UNION ALL
/* 5. Diagnostic Result Verified */
SELECT
V.VisitID AS PatientEpisode,
'Diagnostic Result Verified' AS ActivityName,
R.VerifiedDateTime AS EventTimestamp,
'MEDITECH_LAB' AS SourceSystem,
GETDATE() AS LastDataUpdate,
V.MedicalRecordNumber,
'Laboratory' AS HospitalDepartment,
R.VerifiedBy AS AttendingProvider,
V.PatientType,
T.TriageAcuityLevel,
D.PrimaryDiagnosis,
V.DischargeDisposition,
V.LengthOfStay,
V.IsReadmission
FROM
[YourDatabaseName].[dbo].[LabResults] R
INNER JOIN BaseVisits V ON R.VisitID = V.VisitID
LEFT JOIN PatientDiagnoses D ON V.VisitID = D.VisitID
LEFT JOIN TriageData T ON V.VisitID = T.VisitID
WHERE
R.VerifiedDateTime IS NOT NULL
UNION ALL
/* 6. Diagnosis Documented */
SELECT
V.VisitID AS PatientEpisode,
'Diagnosis Documented' AS ActivityName,
DX.EntryDateTime AS EventTimestamp,
'MEDITECH_ABS' AS SourceSystem,
GETDATE() AS LastDataUpdate,
V.MedicalRecordNumber,
V.FacilityID AS HospitalDepartment,
DX.ProviderID AS AttendingProvider,
V.PatientType,
T.TriageAcuityLevel,
D.PrimaryDiagnosis,
V.DischargeDisposition,
V.LengthOfStay,
V.IsReadmission
FROM
[YourDatabaseName].[dbo].[AbsDiagnoses] DX
INNER JOIN BaseVisits V ON DX.VisitID = V.VisitID
LEFT JOIN PatientDiagnoses D ON V.VisitID = D.VisitID
LEFT JOIN TriageData T ON V.VisitID = T.VisitID
WHERE
DX.EntryDateTime IS NOT NULL
UNION ALL
/* 7. Care Plan Initiated */
SELECT
V.VisitID AS PatientEpisode,
'Care Plan Initiated' AS ActivityName,
N.CreateDateTime AS EventTimestamp,
'MEDITECH_NUR' AS SourceSystem,
GETDATE() AS LastDataUpdate,
V.MedicalRecordNumber,
N.NurseUnit AS HospitalDepartment,
N.NurseID AS AttendingProvider,
V.PatientType,
T.TriageAcuityLevel,
D.PrimaryDiagnosis,
V.DischargeDisposition,
V.LengthOfStay,
V.IsReadmission
FROM
[YourDatabaseName].[dbo].[NurPlan] N
INNER JOIN BaseVisits V ON N.VisitID = V.VisitID
LEFT JOIN PatientDiagnoses D ON V.VisitID = D.VisitID
LEFT JOIN TriageData T ON V.VisitID = T.VisitID
WHERE
N.CreateDateTime IS NOT NULL
UNION ALL
/* 8. Medication Administered */
SELECT
V.VisitID AS PatientEpisode,
'Medication Administered' AS ActivityName,
M.AdminDateTime AS EventTimestamp,
'MEDITECH_PHA' AS SourceSystem,
GETDATE() AS LastDataUpdate,
V.MedicalRecordNumber,
M.AdminLocation AS HospitalDepartment,
M.AdministeredBy AS AttendingProvider,
V.PatientType,
T.TriageAcuityLevel,
D.PrimaryDiagnosis,
V.DischargeDisposition,
V.LengthOfStay,
V.IsReadmission
FROM
[YourDatabaseName].[dbo].[PhaMedAdmin] M
INNER JOIN BaseVisits V ON M.VisitID = V.VisitID
LEFT JOIN PatientDiagnoses D ON V.VisitID = D.VisitID
LEFT JOIN TriageData T ON V.VisitID = T.VisitID
WHERE
M.Status = 'ADMINISTERED'
UNION ALL
/* 9. Consult Request Sent */
SELECT
V.VisitID AS PatientEpisode,
'Consult Request Sent' AS ActivityName,
O.OrderDateTime AS EventTimestamp,
'MEDITECH_OE' AS SourceSystem,
GETDATE() AS LastDataUpdate,
V.MedicalRecordNumber,
O.Department AS HospitalDepartment,
O.OrderingProviderID AS AttendingProvider,
V.PatientType,
T.TriageAcuityLevel,
D.PrimaryDiagnosis,
V.DischargeDisposition,
V.LengthOfStay,
V.IsReadmission
FROM
[YourDatabaseName].[dbo].[OeOrders] O
INNER JOIN BaseVisits V ON O.VisitID = V.VisitID
LEFT JOIN PatientDiagnoses D ON V.VisitID = D.VisitID
LEFT JOIN TriageData T ON V.VisitID = T.VisitID
WHERE
O.Category = 'CONSULT'
UNION ALL
/* 10. Consultation Completed */
SELECT
V.VisitID AS PatientEpisode,
'Consultation Completed' AS ActivityName,
O.CompletedDateTime AS EventTimestamp,
'MEDITECH_OE' AS SourceSystem,
GETDATE() AS LastDataUpdate,
V.MedicalRecordNumber,
O.Department AS HospitalDepartment,
O.OrderingProviderID AS AttendingProvider,
V.PatientType,
T.TriageAcuityLevel,
D.PrimaryDiagnosis,
V.DischargeDisposition,
V.LengthOfStay,
V.IsReadmission
FROM
[YourDatabaseName].[dbo].[OeOrders] O
INNER JOIN BaseVisits V ON O.VisitID = V.VisitID
LEFT JOIN PatientDiagnoses D ON V.VisitID = D.VisitID
LEFT JOIN TriageData T ON V.VisitID = T.VisitID
WHERE
O.Category = 'CONSULT'
AND O.Status = 'COMPLETED'
AND O.CompletedDateTime IS NOT NULL
UNION ALL
/* 11. Patient Transferred */
SELECT
V.VisitID AS PatientEpisode,
'Patient Transferred' AS ActivityName,
TX.TransferDateTime AS EventTimestamp,
'MEDITECH_ADM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
V.MedicalRecordNumber,
TX.ToLocation AS HospitalDepartment,
NULL AS AttendingProvider,
V.PatientType,
T.TriageAcuityLevel,
D.PrimaryDiagnosis,
V.DischargeDisposition,
V.LengthOfStay,
V.IsReadmission
FROM
[YourDatabaseName].[dbo].[AdmRoomTx] TX
INNER JOIN BaseVisits V ON TX.VisitID = V.VisitID
LEFT JOIN PatientDiagnoses D ON V.VisitID = D.VisitID
LEFT JOIN TriageData T ON V.VisitID = T.VisitID
WHERE
TX.TransferDateTime IS NOT NULL
UNION ALL
/* 12. Discharge Order Written */
SELECT
V.VisitID AS PatientEpisode,
'Discharge Order Written' AS ActivityName,
O.OrderDateTime AS EventTimestamp,
'MEDITECH_OE' AS SourceSystem,
GETDATE() AS LastDataUpdate,
V.MedicalRecordNumber,
O.Department AS HospitalDepartment,
O.OrderingProviderID AS AttendingProvider,
V.PatientType,
T.TriageAcuityLevel,
D.PrimaryDiagnosis,
V.DischargeDisposition,
V.LengthOfStay,
V.IsReadmission
FROM
[YourDatabaseName].[dbo].[OeOrders] O
INNER JOIN BaseVisits V ON O.VisitID = V.VisitID
LEFT JOIN PatientDiagnoses D ON V.VisitID = D.VisitID
LEFT JOIN TriageData T ON V.VisitID = T.VisitID
WHERE
O.Category = 'DISCHARGE'
OR O.Mnemonic LIKE '%DISCHARGE%'
UNION ALL
/* 13. Patient Discharged */
SELECT
V.VisitID AS PatientEpisode,
'Patient Discharged' AS ActivityName,
V.DischargeDateTime AS EventTimestamp,
'MEDITECH_ADM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
V.MedicalRecordNumber,
V.FacilityID AS HospitalDepartment,
V.AttendingProviderID AS AttendingProvider,
V.PatientType,
T.TriageAcuityLevel,
D.PrimaryDiagnosis,
V.DischargeDisposition,
V.LengthOfStay,
V.IsReadmission
FROM
BaseVisits V
LEFT JOIN PatientDiagnoses D ON V.VisitID = D.VisitID
LEFT JOIN TriageData T ON V.VisitID = T.VisitID
WHERE
V.DischargeDateTime IS NOT NULL
UNION ALL
/* 14. Follow-up Booked */
SELECT
V.VisitID AS PatientEpisode,
'Follow-up Booked' AS ActivityName,
S.BookDateTime AS EventTimestamp,
'MEDITECH_SCH' AS SourceSystem,
GETDATE() AS LastDataUpdate,
V.MedicalRecordNumber,
S.ApptDepartment AS HospitalDepartment,
S.ProviderID AS AttendingProvider,
V.PatientType,
T.TriageAcuityLevel,
D.PrimaryDiagnosis,
V.DischargeDisposition,
V.LengthOfStay,
V.IsReadmission
FROM
[YourDatabaseName].[dbo].[SchAppt] S
INNER JOIN BaseVisits V ON S.PatientID = V.PatientID
LEFT JOIN PatientDiagnoses D ON V.VisitID = D.VisitID
LEFT JOIN TriageData T ON V.VisitID = T.VisitID
WHERE
S.BookDateTime > V.AdmitDateTime
AND S.BookDateTime <= DATEADD(day, 30, V.DischargeDateTime) /* Logic to link appt to episode */
AND S.Status NOT IN ('CANCELLED', 'NOSHOW'); 立即优化患者旅程,减少延误
将周期时间缩短30%,提升医院运营效率
无需信用卡,几分钟即可开始。