您的理赔处理数据模板
您的理赔处理数据模板
- 建议收集的属性
- 需要跟踪的关键活动
- Guidewire ClaimCenter数据提取指南
理赔处理属性
| 名称 | 说明 | ||
|---|---|---|---|
| 事件时间 EventTime | 活动发生的准确日期和时间。 | ||
| 说明 此时间戳标记活动在系统中记录的准确时刻,是所有基于时间的流程分析的基础。 按单个案例ID对EventTime进行时间排序,即可还原流程路径。相邻事件的时间差可用于计算周期时间、等待时间和处理时间,这些指标对于绩效分析、瓶颈识别和SLA监控至关重要。 重要性 此时间戳对于事件排序、周期时间和时长计算,以及流程延迟识别都不可或缺。 获取途径 可在Guidewire ClaimCenter的历史记录或审计表中找到,通常对应“CreateTime”或“UpdateTime”字段。 示例 2023-05-15T09:00:00Z2023-05-16T14:30:15Z2023-06-01T11:20:00Z | |||
| 活动名称 ActivityName | 在理赔生命周期的特定时点发生的业务活动或事件名称。 | ||
| 说明 此属性描述理赔流程中的具体步骤或里程碑,例如“创建理赔”“开始调查”或“发放赔款”。同一案例ID对应的活动序列构成流程路径。 分析活动的顺序、频次及活动间隔时长,是流程挖掘的核心。借此可以发现流程模型、识别瓶颈、发现返工循环并分析流程偏差。 重要性 此属性定义流程步骤,便于呈现流程图,并分析流程路径和瓶颈。 获取途径 通常从ClaimCenter的事件表或审计日志中提取,方法是将特定系统事件或状态变更映射为标准化的活动名称。 示例 理赔已创建责任认定已完成付款已发出理赔已结案 | |||
| 理赔ID ClaimID | 每笔保险理赔的唯一标识符,也是主要案例标识符。 | ||
| 说明 理赔ID是理赔流程分析的核心,可从提交到结案唯一标识每个案例。它将相关活动、文档、付款和沟通记录关联起来,确保完整、一致地呈现理赔生命周期。 在流程挖掘中,数据集中的每个事件都与理赔ID关联,因此可以还原端到端流程。这对于分析周期时间、识别流程变体,以及跟踪理赔在不同部门和理赔员之间的处理过程至关重要。 重要性 这是关联所有相关事件的基础标识符,可用于追踪和分析单笔理赔的完整处理过程。 获取途径 这是Guidewire ClaimCenter中的主键,通常位于核心Claim实体的Claim.ClaimNumber字段或类似字段中。 示例 000-123-45678000-987-65432001-456-11223 | |||
| 指定理赔专员 AssignedAdjuster | 负责处理理赔案件或特定活动的用户姓名或ID。 | ||
| 说明 此属性标识在特定时点负责某项理赔的理赔专员。专员可能负责整个理赔案件,也可能只负责其中的特定任务。 按指定理赔专员分析,对于平衡工作量、管理绩效和发现培训需求至关重要。此类分析有助于回答以下问题:“哪些专员的案件量最高?”“不同专员的绩效是否存在差异?”“工作分配是否均衡?” 重要性 跟踪用户参与情况,支持工作量分析、绩效对比和资源相关瓶颈识别。 获取途径 可在ClaimCenter的Claim或Exposure实体中找到,通常关联到User对象,例如Claim.Assignee。 示例 j.doem.smiths.jones | |||
| 损失原因 LossCause | 造成损失事件的具体原因,例如碰撞、火灾或水损。 | ||
| 说明 此属性详细说明提交理赔的原因。损失原因通常决定所需的调查步骤、需要的专家类型以及理赔案件的整体复杂程度。 按损失原因分析流程可以发现潜在规律。例如,与盗窃理赔相比,水损理赔可能更常出现返工,或需要更多专家参与。这些洞察有助于制定更有针对性、更高效的处理流程。 重要性 提供理赔性质的背景信息,支持分析不同损失原因对流程路径和时长的影响。 获取途径 这是Claim实体中的标准字段,通常命名为“LossCause”。 示例 碰撞火灾水损盗窃 | |||
| 理赔状态 ClaimStatus | 事件发生时理赔案件的整体状态,例如未结、已结或已拒赔。 | ||
| 说明 此属性反映理赔案件的整体状态,主要状态包括“未结”“已结”“已拒赔”和“重新开启”。理赔最终状态是一项重要的结果指标。 跟踪理赔状态变化有助于定义关键流程里程碑和结果,可用于识别理赔最终处理结果、计算拒赔率,以及分析结案后重新开启的频率。重新开启往往意味着流程存在问题或客户不满。 重要性 显示理赔结果,对于分析拒赔率、结案模式和重新开启频率至关重要。 获取途径 这是Claim实体的核心字段,通常命名为“State”或“Status”。 示例 未结已结已拒赔已重新开启 | |||
| 理赔类型 ClaimType | 保险理赔的类别,例如汽车、财产或责任险。 | ||
| 说明 理赔类型是根据业务险种或损失性质对理赔案件进行的基本分类。不同类型的理赔通常遵循不同流程,复杂程度各异,也受不同法规约束。 按理赔类型细分流程分析,才能获得有意义的洞察。这样可以比较不同险种的流程绩效、识别特定类型的瓶颈,并根据各类理赔的特点制定改进措施。 重要性 支持按理赔类型细分分析。不同类型(例如汽车与财产理赔)通常遵循不同流程,绩效目标也各不相同。 获取途径 从ClaimCenter的Policy或Claim实体中提取,通常依据业务险种(LOB)代码。 示例 个人汽车险商业财产险一般责任险工伤赔偿险 | |||
| SLA状态 SLAState | 表示理赔案件是否在目标结案日期前结案。 | ||
| 说明 此计算属性以类别形式显示每项已结案理赔的SLA达标情况。它通过比较“理赔结案”活动的时间戳与“目标结案日期”得出。 此属性直接支持“理赔目标结案达标情况”仪表板,将分析结果归纳为“按时”或“逾期”等清晰类别。您可以轻松筛选和汇总数据,计算整体SLA达标率,并逐级下钻分析延迟原因。 重要性 以清晰的类别显示SLA达标结果,便于筛选、汇总和分析按时完成情况。 获取途径 计算字段:IF (ActualCloseDate <= ResolutionTargetDate, 'On Time', 'Late')。 示例 按时逾期 | |||
| 保单类型 PolicyType | 提交理赔所依据的具体保险保单类型。 | ||
| 说明 与理赔类型相比,保单类型的分类更细,具体到保险产品,例如“房主险”“商业汽车险”或“网络责任险”。这一层级的细分有助于发现特定产品相关的流程差异。 按保单类型分析流程,有助于发现产品特有的低效环节。例如,新推出的保单可能对应尚不成熟的流程,导致处理延迟。分析结果可为产品设计和流程标准化提供参考。 重要性 支持针对特定保险产品开展流程分析,帮助识别不同保单特点对处理方式的影响。 获取途径 此信息位于与Claim关联的Policy实体中。 示例 房主综合险商业汽车责任险内陆海上保险 | |||
| 司法管辖州 JurisdictionState | 负责管辖理赔案件的州或司法管辖区,决定适用的监管要求。 | ||
| 说明 此属性指定处理理赔案件所依据的法律管辖区,例如美国的州。不同司法管辖区的保险法规可能差异很大,进而影响所需流程步骤、沟通时限和文档要求。 此属性对于合规监控至关重要。按司法管辖区分析流程,可以确认是否满足各州的监管要求。它也有助于解释由法律约束而非运营低效造成的周期时间或流程路径差异。 重要性 对于合规分析至关重要,因为不同司法管辖区的法规各异,会影响理赔流程。 获取途径 这是Claim实体中的标准字段,通常命名为“JurisdictionState”。 示例 CANYTXFL | |||
| 损失发生日期 LossDate | 引发理赔的事故或损失发生日期。 | ||
| 说明 损失发生日期是实际事故发生的日期,例如车祸或财产损坏,与理赔报案或创建日期不同。 从损失发生日期到“创建理赔”活动之间的时间差称为报案延迟,是一项重要的KPI。分析这一指标有助于了解客户行为,以及首次报案渠道的有效性。 重要性 提供理赔起因的重要背景信息,并有助于分析报案延迟,即事故发生到提交理赔之间的时间。 获取途径 这是Claim实体中的基本日期字段,通常命名为“LossDate”。 示例 2023-05-102023-04-202023-05-28 | |||
| 数据最近更新时间 LastDataUpdate | 指示数据最近一次从源系统刷新或提取的时间戳。 | ||
| 说明 此属性记录最近一次从源系统提取数据的时间戳,是用于判断分析数据时效性的重要元数据。 仪表板和分析结果应醒目显示此信息,让用户了解数据的更新时间。借此可以判断分析反映的是当前运营状况,还是基于较早的数据。 重要性 显示数据的时效性,帮助用户了解流程分析反映的最新情况。 获取途径 此值在ETL过程中生成并存储,表示数据加载的时间戳。 示例 2024-07-28T04:00:00Z2024-07-29T04:00:00Z | |||
| 是否自动执行 IsAutomated | 标记活动由系统自动执行还是由人工用户完成。 | ||
| 说明 此布尔属性用于区分系统执行的活动(例如自动创建准备金、系统生成函件)和理赔专员手动完成的活动。 分析此属性是了解理赔流程自动化程度的关键。它有助于识别人工介入频繁的环节、衡量直通式处理计划的成效,并找出新的自动化机会,例如定位目前由人工执行的重复性、基于规则的任务。 重要性 区分系统执行和人工执行的活动,对于自动化分析和识别人工处理瓶颈至关重要。 获取途径 此值通常需要推导得出。例如,可将通用“system”用户记录的事件标记为自动执行。 示例 truefalse | |||
| 是否返工 IsRework | 标记活动是否属于返工循环,即流程返回到之前的阶段。 | ||
| 说明 此计算属性用于标记属于返工循环的活动。例如,流程从“调查完成”返回到“开始调查”时,第二次出现的“开始调查”活动会被标记为返工。 识别返工是发现流程低效和质量问题的基础。“返工与拒绝频率”仪表板依靠此指标,量化理赔案件偏离理想路径的频率。分析返工原因有助于显著提升流程质量和处理速度。 重要性 明确标记属于返工循环的活动,帮助发现流程低效和质量问题。 获取途径 流程挖掘工具会分析每个案例的活动顺序并计算此值。 示例 truefalse | |||
| 源系统 SourceSystem | 提取数据的系统。 | ||
| 说明 此属性标识事件数据的来源。在现代企业的系统环境中,理赔相关事件可能来自多个系统,例如Guidewire等核心系统、文档管理系统或客户门户。 指定源系统对于数据治理、排查数据不一致问题以及了解流程所处的技术环境至关重要。它有助于区分核心流程步骤与外围系统提供的支持活动。 重要性 标识数据来源,对于数据治理和涉及多个集成系统的分析至关重要。 获取途径 通常在数据提取、转换和加载(ETL)过程中添加为静态值。 示例 Guidewire ClaimCenter v10客户门户APIDocumentum | |||
| 目标结案日期 ResolutionTargetDate | 根据内部或监管SLA,理赔案件预计解决的截止日期。 | ||
| 说明 目标结案日期是理赔结案的截止日期,通常根据司法管辖区、理赔类型和保单条款等因素确定,可作为绩效和合规情况的衡量基准。 此属性对于构建SLA达标情况仪表板和KPI至关重要。通过将实际“理赔结案”日期与目标日期进行比较,分析可以自动标记逾期理赔、衡量按时完成率,并识别哪些理赔类型或部门未能达到目标。 重要性 这是衡量服务级别协议(SLA)达标情况并识别可能逾期理赔的基准。 获取途径 这可能是自定义字段,也可能根据ClaimCenter中配置的业务规则推导得出,或与特定理赔指标相关。 示例 2023-06-142023-07-202023-08-28 | |||
| 索赔金额 ClaimedAmount | 投保人最初申报的索赔总金额。 | ||
| 说明 此属性表示索赔人申报的损失金额,通常是初步估算值,可能会随着理赔调查和准备金设定而变化。 分析索赔金额有助于按财务影响对理赔案件进行细分。高金额理赔通常比低金额理赔的处理流程更严格、复杂。比较不同金额区间的流程,可以发现简化小额理赔处理或加强大额理赔管控的机会。 重要性 支持按金额细分理赔案件,因为高金额理赔可能遵循不同且更复杂的流程。 获取途径 此信息可能并非来自单一字段,而是根据Exposure中记录的初始损失估算值推导得出。 示例 5000.00150000.00750.50 | |||
| 结束时间 EndTime | 指示活动完成时间的时间戳。 | ||
| 说明 结束时间标记活动完成的时刻,尤其适用于“调查”或“文档审核”等具有可测量时长的任务。许多流程挖掘活动是瞬时的,只需StartTime即可;对于有明确开始和结束时间的活动,则应同时记录这两个时间戳。 此属性可准确计算活动处理时间,并将其与等待时间区分开来。这样可以识别具体哪些任务耗时较长,而不只是观察不同步骤之间的长时间延迟。 重要性 此属性可准确测量活动的完成时长,并将处理时间与等待时间区分开来。 获取途径 可能需要通过查找后续事件来推导该值,例如状态从“进行中”变为“已完成”,以此判断活动何时结束。 示例 2023-05-15T17:00:00Z2023-05-16T15:00:00Z2023-06-02T10:00:00Z | |||
| 赔付金额 PaymentAmount | 某项赔付活动实际支付的金额。 | ||
| 说明 此属性记录针对某项理赔支付的每笔款项金额。同一理赔案件在整个生命周期内可能有多笔赔付。 在流程挖掘分析中,此属性对于财务分析至关重要。它可用于跟踪每项理赔的总赔付金额、分析不同金额对应的赔付审批时长,并将流程低效与财务结果关联起来。例如,周期时间较长的理赔案件可能对应更高的总赔付金额。 重要性 跟踪理赔过程中的财务交易,支持分析赔付金额及其与流程活动的关系。 获取途径 可在与理赔案件关联的赔付实体中找到,通常位于交易表或支票表中。 示例 4500.00125000.00500.00 | |||
| 部门 Department | 负责处理理赔活动的业务单元或部门。 | ||
| 说明 此属性表示指定理赔专员所属的部门或团队,例如“汽车理赔”“财产理赔”或“特别调查组”,为流程提供组织层面的背景信息。 按部门分析对于了解组织层面的流程绩效至关重要。此类分析有助于发现部门间交接延迟、比较团队效率,并在理赔组织内更有效地分配资源。 重要性 提供组织层面的背景信息,支持跨团队绩效分析,并揭示部门间交接问题。 获取途径 此信息通常关联到ClaimCenter中指定用户或群组的个人资料。 示例 汽车理赔部财产理赔组特别调查组(SIU) | |||
| 重复请求信息 RepeatedInfoRequestFlag | 标记同一理赔案件是否多次发生“请求补充信息”。 | ||
| 说明 如果某项理赔案件发生多次“请求补充信息”活动,此布尔标记将设为true。这通常表明初次信息收集环节效率不高。 此属性直接支持“重复请求信息率”KPI,有助于量化初次事实调查不完整的问题,而这可能导致明显延迟并令客户不满。分析带有此标记的理赔案件,有助于改进理赔专员使用的清单和流程,确保一次性收集所有必要信息。 重要性 识别首次信息收集不完整造成的低效问题,以及由此导致的流程延迟和返工。 获取途径 流程挖掘工具会统计每个案例中“请求补充信息”活动的发生次数并计算此值。 示例 truefalse | |||
理赔处理活动
| 活动 | 说明 | ||
|---|---|---|---|
| 付款已发出 | 此活动标志着付款流程的最后一步,即正式发出付款并将其发送至财务系统。这是一笔明确记录的财务交易。 | ||
| 重要性 此活动对于衡量付款发放效率至关重要,有助于区分审批延误与实际拨款发放延误。 获取途径 从cc_check或cc_transaction实体的IssueDate字段,或状态变更为“已发出”或“已提交”的记录中获取。通常会明确记录带时间戳的事件。 采集 识别付款记录中的IssueDate,或状态变更为“已发出”的时间戳。 事件类型 explicit | |||
| 付款已批准 | 表示结算付款已正式获批。这是重要的审计事件,具有审批权限的用户批准交易时会明确记录此事件。 | ||
| 重要性 这一重要里程碑使最终付款步骤得以继续。分析此活动前后的耗时,有助于区分审批工作流或经理无法及时处理所造成的延误。 获取途径 通常会在cc_history表中明确记录与cc_check或cc_transaction实体相关的事件,显示状态从“待审批”变为“已批准”。 采集 跟踪特定付款交易的状态变更事件,确认其变为“已批准”。 事件类型 explicit | |||
| 已设置初始准备金 | 表示已为某个损失项目创建首笔财务准备金交易,用于估算理赔的潜在成本。这是重要的财务事件,会被明确记录。 | ||
| 重要性 此里程碑对财务分析和了解潜在责任评估速度至关重要。延误可能影响财务规划和报告。 获取途径 此事件根据理赔中某个损失项目关联的首条cc_reserveline记录创建情况获取。该交易的CreateTime即为事件时间戳。 采集 查找指定理赔各损失项目准备金记录中的最早创建时间戳。 事件类型 explicit | |||
| 损失项目已创建 | 此活动表示已创建一个损失项目,即理赔项下某项潜在责任或损失类型(例如车辆损坏、人身伤害)。这是Guidewire中明确记录的事件。 | ||
| 重要性 损失项目是理赔分类和分析的基础。跟踪其创建情况,有助于了解不同理赔复杂程度和损失类型对应的流程差异。 获取途径 从cc_exposure表中新记录的CreateTime字段获取。每条记录都关联到一个理赔ID。 采集 识别Exposure实体表中新记录的创建时间戳。 事件类型 explicit | |||
| 理赔已创建 | 此活动标志着首次损失通知(FNOL)以及Guidewire ClaimCenter中新理赔记录的正式创建。当新的Claim实体首次保存到数据库时,系统会明确记录此事件。 | ||
| 重要性 作为主要开始事件,此活动对于衡量理赔端到端周期时间至关重要。它为后续所有绩效和时长KPI提供基准。 获取途径 这是从cc_claim表的CreateTime字段中明确记录的事件。新记录创建后会生成唯一理赔ID,并触发此事件。 采集 识别基础Claim实体表中新记录的创建时间戳。 事件类型 explicit | |||
| 理赔已拒赔 | 表示最终决定拒绝理赔,是流程的终止节点。通常根据理赔状态变为已关闭且原因是“已拒赔”来推断此事件。 | ||
| 重要性 这是重要的结果事件。分析拒赔的频率、原因和相关流程路径,有助于发现理赔受理、调查或保单解读方面的问题。 获取途径 根据cc_claim表的State字段变为“已关闭”,且CloseReason字段为“已拒赔”或类似值来推断此事件。事件时间戳为CloseDate。 采集 筛选状态变更为“已关闭”且原因代码表示拒赔的理赔记录。 事件类型 inferred | |||
| 理赔已结案 | 表示所有活动和付款完成后,理赔已成功结案。这是主要的成功结束事件,通常根据理赔主状态变更来推断。 | ||
| 重要性 作为主要结束事件,此活动对于计算端到端周期时间和衡量SLA达成情况至关重要,标志着理赔生命周期结束。 获取途径 根据cc_claim表的State字段变为“已关闭”来推断此事件。事件时间戳为理赔记录中的CloseDate。 采集 识别理赔主状态字段更新为“已关闭”的时间。 事件类型 inferred | |||
| 已收到补充信息 | 表示补充信息请求已完成。当对应的信息请求“活动”(任务)标记为“已完成”时,系统会记录此事件。 | ||
| 重要性 这是衡量“补充信息收集周期时间”KPI的终点。从请求到收到信息的间隔过长,是理赔流程中常见的延误原因。 获取途径 从cc_activity记录的CloseTime字段获取,其中ActivityPattern与信息请求有关。该活动的状态必须为“已完成”。 采集 识别用于请求外部信息的任务完成时间戳。 事件类型 explicit | |||
| 已请求补充信息 | 表示已向索赔人或第三方发出补充信息或文档请求。通常会在ClaimCenter中明确记录为新建的“活动”(任务)。 | ||
| 重要性 此活动是衡量“补充信息收集周期时间”KPI的起点。此类活动频繁出现,可能说明FNOL流程信息不完整或信息收集效率低下。 获取途径 从cc_activity记录的CreateTime字段获取,其中ActivityPattern与向外部相关方请求文档或信息有关。 采集 识别用于请求外部信息的任务创建记录。 事件类型 explicit | |||
| 理赔已分配 | 表示将理赔分配给特定用户(理赔员)或团队处理。通常通过监控Claim实体中的分配字段变更来推断此事件。 | ||
| 重要性 跟踪分配情况对于分析理赔员工作量、识别分派瓶颈,以及衡量受理人员首次采取行动所需的时间至关重要。 获取途径 通过cc_history表跟踪与特定理赔ID关联的AssignedUser或AssignedGroup字段变更来推断此事件。变更时间戳即为事件发生时间。 采集 监控审计日志或历史记录表中理赔分配字段的更新。 事件类型 inferred | |||
| 理赔已重新开启 | 表示理赔从“已关闭”状态重新变为“已开启”状态,以便继续处理。通常根据特定的状态变更顺序推断此事件。 | ||
| 重要性 此活动表示发生了返工。大量理赔重新开启,可能说明初次结算存在问题、遗漏损失或其他流程失误,导致成本增加、效率降低。 获取途径 通过cc_history表识别cc_claim实体的State字段从“已关闭”变回“已开启”或其他活跃状态来推断此事件。 采集 监控理赔主状态字段,识别其从已关闭状态变为已开启状态的情况。 事件类型 inferred | |||
| 结算金额已计算 | 此活动表示结算金额已确定,但尚未获准付款。可根据状态为“待审批”的付款记录创建情况推断此事件。 | ||
| 重要性 此活动标志着流程从评估转入付款阶段,也是衡量“付款授权前置时间”KPI的起点,可用于发现审批链中的延误。 获取途径 根据cc_check或cc_transaction记录的CreateTime推断,其初始状态为“待审批”或类似状态,尚未变为“已批准”。 采集 识别处于预审批状态的付款或交易记录创建情况。 事件类型 inferred | |||
| 调查已开始 | 表示理赔或损失项目的调查阶段正式开始。通常根据Guidewire中首个与调查相关的“活动”(任务)创建情况推断。 | ||
| 重要性 此活动标志着一个重要且通常耗时较长的阶段开始。分析调查启动前的等待时间和调查本身的持续时间,有助于发现主要瓶颈。 获取途径 根据cc_activity记录的CreateTime推断,其中ActivityPattern与调查相关(例如“初步调查”“联系证人”)。 采集 识别首个具有调查相关模式或主题的任务创建记录。 事件类型 inferred | |||
| 责任认定已完成 | 表示已确定某个损失项目的责任或过错。通常根据Exposure实体的状态变更推断此事件。 | ||
| 重要性 这是影响结算和付款阶段的重要决策里程碑。分析作出决定所需的时间,有助于发现调查和评估阶段的瓶颈。 获取途径 通过cc_history表跟踪cc_exposure实体的State字段或自定义责任状态字段变更来推断此事件。历史记录的时间戳即为事件时间。 采集 监控审计日志或历史记录表中损失项目状态或责任状态的更新。 事件类型 inferred | |||
数据提取指南
步骤
- 确认前提条件:确认您拥有访问Guidewire DataHub/InfoCenter数据集市数据库所需的权限和凭据,并具备只读权限。确保用于填充理赔数据集市的ETL作业运行正常,且数据为最新。
- 连接数据库:使用标准SQL客户端(如DBeaver、SQL Server Management Studio或类似工具)连接数据集市数据库服务器。
- 了解数据库架构:运行完整查询前,先熟悉数据集市架构。找到理赔、风险标的、活动和财务交易对应的主表。关键表通常以_dim(维度)和_fact(事实)等后缀命名。这样有助于您核对脚本中的占位表名和列名。
- 准备SQL查询:将查询部分提供的完整SQL脚本复制到SQL客户端的查询编辑器中。
- 替换占位符:仔细检查脚本并替换所有占位值,包括数据库/架构名称(例如[YourDataMart])、日期范围参数('[StartDate]'、'[EndDate]')以及系统专属配置值(例如活动模式、状态代码)。
- 执行查询:在数据集市中运行修改后的SQL查询。执行时间可能因所选日期范围和系统数据量而异。
- 初步检查数据:查询完成后,检查结果集的前几百行。确认ClaimID、ActivityName和EventTime列已按预期填充,并且包含不同类型的活动。
- 导出为CSV:通过SQL客户端将完整结果集导出为CSV文件。使用清晰易懂的文件名,例如guidewire_claimcenter_event_log.csv。
- 整理ProcessMind所需格式:确保CSV文件采用UTF-8编码保存,并且包含与SQL查询列别名一致的表头。现在即可将文件上传到ProcessMind。
配置
- 数据源:Guidewire DataHub/InfoCenter理赔数据集市。这是用于报表和分析的预聚合维度数据库,与ClaimCenter生产数据库相互独立。
- 所需授权:需要对承载数据集市的SQL数据库进行只读访问。您需要用户名、密码和连接信息(服务器地址、数据库名称)。
- ETL作业状态:提取结果的准确性取决于填充数据集市的Guidewire ETL作业是否成功并及时运行。请核实最近一次成功运行的时间,以了解数据的新鲜度。
- 日期范围筛选:查询中的WHERE子句包含'[StartDate]'和'[EndDate]'占位符。建议先选择较短的日期范围(例如3至6个月),以控制查询性能。日期筛选条件应用于理赔的CreateTime。
- 配置专属值:Guidewire支持高度配置。您必须调整WHERE子句中的值,使其符合组织设置,包括:
- ActivityPattern名称(例如'fnol'、'investigation'、'Request additional information')
- ClaimStatus、ExposureStatus和CloseReason代码(例如'denied'、'closed')
- TransactionStatus代码(例如'pendingapproval'、'approved'、'issued')
- 性能:查询大型历史记录表或审计表可能会占用大量资源。对于超大型数据集,建议在业务低峰时段执行查询。请确保相关表中的ClaimID或ClaimNumber列已建立索引。
查询示例 sql
-- This query extracts a process mining event log for claims processing from a Guidewire DataHub/InfoCenter Data Mart.
-- Replace placeholders: [YourDataMart], [StartDate], [EndDate], and any configuration-specific string literals.
WITH ClaimHistory AS (
-- Pre-process claim history to identify status changes, especially for Reopened events.
SELECT
ClaimID,
Status,
UpdateTime,
LAG(Status, 1) OVER (PARTITION BY ClaimID ORDER BY UpdateTime) AS PreviousStatus
FROM [YourDataMart].[dbo].[ClaimHistory_dim] -- Placeholder for claim history/audit table
),
BaseClaims AS (
-- Select the set of claims to be analyzed based on a date range.
SELECT
c.ClaimID AS ClaimPublicID, -- Using PublicID as it's often the user-facing ID
c.ClaimNumber AS ClaimID,
c.AssignedAdjusterName AS AssignedAdjuster,
c.PolicyType AS ClaimType,
c.ClaimStatus AS ClaimStatus,
c.LossCause AS LossCause,
c.CreateTime
FROM [YourDataMart].[dbo].[Claim_dim] c
WHERE c.CreateTime >= '[StartDate]' AND c.CreateTime < '[EndDate]'
)
-- 1. Claim Created
SELECT
bc.ClaimID AS ClaimID,
'Claim Created' AS ActivityName,
bc.CreateTime AS EventTime,
bc.AssignedAdjuster,
bc.ClaimType,
bc.ClaimStatus,
bc.LossCause
FROM BaseClaims bc
UNION ALL
-- 2. Claim Assigned
-- This captures the first assignment event from the history table.
SELECT
bc.ClaimID,
'Claim Assigned' AS ActivityName,
MIN(ch.UpdateTime) AS EventTime,
bc.AssignedAdjuster,
bc.ClaimType,
bc.ClaimStatus,
bc.LossCause
FROM BaseClaims bc
JOIN [YourDataMart].[dbo].[ClaimHistory_dim] ch ON bc.ClaimPublicID = ch.ClaimID
WHERE ch.EventType = 'Assignment' -- Assumes an EventType column exists to identify assignment changes
GROUP BY bc.ClaimID, bc.AssignedAdjuster, bc.ClaimType, bc.ClaimStatus, bc.LossCause
UNION ALL
-- 3. Exposure Created
SELECT
bc.ClaimID,
'Exposure Created' AS ActivityName,
e.CreateTime AS EventTime,
bc.AssignedAdjuster,
bc.ClaimType,
bc.ClaimStatus,
bc.LossCause
FROM BaseClaims bc
JOIN [YourDataMart].[dbo].[Exposure_dim] e ON bc.ClaimPublicID = e.ClaimID
UNION ALL
-- 4. Initial Reserve Set
-- Finds the very first reserve transaction for any exposure on the claim.
SELECT
x.ClaimID,
'Initial Reserve Set' AS ActivityName,
x.EventTime,
x.AssignedAdjuster,
x.ClaimType,
x.ClaimStatus,
x.LossCause
FROM (
SELECT
bc.ClaimID,
t.CreateTime AS EventTime,
bc.AssignedAdjuster,
bc.ClaimType,
bc.ClaimStatus,
bc.LossCause,
ROW_NUMBER() OVER(PARTITION BY bc.ClaimID ORDER BY t.CreateTime) as rn
FROM BaseClaims bc
JOIN [YourDataMart].[dbo].[Transaction_fact] t ON bc.ClaimPublicID = t.ClaimID
WHERE t.TransactionType = 'Reserve'
) x
WHERE x.rn = 1
UNION ALL
-- 5. Investigation Started
-- Finds the creation of the first investigation-related activity.
SELECT
x.ClaimID,
'Investigation Started' AS ActivityName,
x.EventTime,
x.AssignedAdjuster,
x.ClaimType,
x.ClaimStatus,
x.LossCause
FROM (
SELECT
bc.ClaimID,
a.CreateTime AS EventTime,
bc.AssignedAdjuster,
bc.ClaimType,
bc.ClaimStatus,
bc.LossCause,
ROW_NUMBER() OVER(PARTITION BY bc.ClaimID ORDER BY a.CreateTime) as rn
FROM BaseClaims bc
JOIN [YourDataMart].[dbo].[Activity_dim] a ON bc.ClaimPublicID = a.ClaimID
WHERE a.ActivityPatternName LIKE '%Investigation%'
) x
WHERE x.rn = 1
UNION ALL
-- 6. Additional Info Requested
SELECT
bc.ClaimID,
'Additional Info Requested' AS ActivityName,
a.CreateTime AS EventTime,
bc.AssignedAdjuster,
bc.ClaimType,
bc.ClaimStatus,
bc.LossCause
FROM BaseClaims bc
JOIN [YourDataMart].[dbo].[Activity_dim] a ON bc.ClaimPublicID = a.ClaimID
WHERE a.ActivityPatternName LIKE '%Request%Information%'
UNION ALL
-- 7. Additional Info Received
SELECT
bc.ClaimID,
'Additional Info Received' AS ActivityName,
a.CompletionTime AS EventTime,
bc.AssignedAdjuster,
bc.ClaimType,
bc.ClaimStatus,
bc.LossCause
FROM BaseClaims bc
JOIN [YourDataMart].[dbo].[Activity_dim] a ON bc.ClaimPublicID = a.ClaimID
WHERE a.ActivityPatternName LIKE '%Request%Information%' AND a.CompletionTime IS NOT NULL
UNION ALL
-- 8. Liability Decision Made
-- Captures when an exposure's liability decision is first set.
SELECT
x.ClaimID,
'Liability Decision Made' AS ActivityName,
x.EventTime,
x.AssignedAdjuster,
x.ClaimType,
x.ClaimStatus,
x.LossCause
FROM (
SELECT
bc.ClaimID,
eh.UpdateTime AS EventTime,
bc.AssignedAdjuster,
bc.ClaimType,
bc.ClaimStatus,
bc.LossCause,
ROW_NUMBER() OVER(PARTITION BY bc.ClaimID ORDER BY eh.UpdateTime) as rn
FROM BaseClaims bc
JOIN [YourDataMart].[dbo].[ExposureHistory_dim] eh ON bc.ClaimPublicID = eh.ClaimID
WHERE eh.LiabilityDecision IS NOT NULL AND eh.PreviousLiabilityDecision IS NULL -- Captures the first time it was set
) x
WHERE x.rn = 1
UNION ALL
-- 9. Settlement Calculated
-- Captures the creation of a payment transaction that is pending approval.
SELECT
bc.ClaimID,
'Settlement Calculated' AS ActivityName,
t.CreateTime AS EventTime,
bc.AssignedAdjuster,
bc.ClaimType,
bc.ClaimStatus,
bc.LossCause
FROM BaseClaims bc
JOIN [YourDataMart].[dbo].[Transaction_fact] t ON bc.ClaimPublicID = t.ClaimID
WHERE t.TransactionType = 'Payment' AND t.TransactionStatus = 'PendingApproval'
UNION ALL
-- 10. Payment Approved
SELECT
bc.ClaimID,
'Payment Approved' AS ActivityName,
t.ApprovalDate AS EventTime,
bc.AssignedAdjuster,
bc.ClaimType,
bc.ClaimStatus,
bc.LossCause
FROM BaseClaims bc
JOIN [YourDataMart].[dbo].[Transaction_fact] t ON bc.ClaimPublicID = t.ClaimID
WHERE t.TransactionType = 'Payment' AND t.ApprovalDate IS NOT NULL AND t.TransactionStatus = 'Approved'
UNION ALL
-- 11. Payment Issued
SELECT
bc.ClaimID,
'Payment Issued' AS ActivityName,
t.IssueDate AS EventTime,
bc.AssignedAdjuster,
bc.ClaimType,
bc.ClaimStatus,
bc.LossCause
FROM BaseClaims bc
JOIN [YourDataMart].[dbo].[Transaction_fact] t ON bc.ClaimPublicID = t.ClaimID
WHERE t.TransactionType = 'Payment' AND t.IssueDate IS NOT NULL AND t.TransactionStatus = 'Issued'
UNION ALL
-- 12. Claim Denied
SELECT
bc.ClaimID,
'Claim Denied' AS ActivityName,
ch.UpdateTime AS EventTime,
bc.AssignedAdjuster,
bc.ClaimType,
'Denied' AS ClaimStatus, -- Overriding status for clarity
bc.LossCause
FROM BaseClaims bc
JOIN ClaimHistory ch ON bc.ClaimPublicID = ch.ClaimID
WHERE ch.Status = 'Closed' AND ch.PreviousStatus <> 'Closed'
AND EXISTS (SELECT 1 FROM [YourDataMart].[dbo].[Claim_dim] c2 WHERE c2.ClaimID = bc.ClaimPublicID AND c2.CloseReason = 'Denied')
UNION ALL
-- 13. Claim Closed
SELECT
bc.ClaimID,
'Claim Closed' AS ActivityName,
ch.UpdateTime AS EventTime,
bc.AssignedAdjuster,
bc.ClaimType,
'Closed' AS ClaimStatus, -- Overriding status for clarity
bc.LossCause
FROM BaseClaims bc
JOIN ClaimHistory ch ON bc.ClaimPublicID = ch.ClaimID
WHERE ch.Status = 'Closed' AND ch.PreviousStatus <> 'Closed'
AND NOT EXISTS (SELECT 1 FROM [YourDataMart].[dbo].[Claim_dim] c2 WHERE c2.ClaimID = bc.ClaimPublicID AND c2.CloseReason = 'Denied')
UNION ALL
-- 14. Claim Reopened
SELECT
bc.ClaimID,
'Claim Reopened' AS ActivityName,
ch.UpdateTime AS EventTime,
bc.AssignedAdjuster,
bc.ClaimType,
'Open' AS ClaimStatus, -- Overriding status for clarity
bc.LossCause
FROM BaseClaims bc
JOIN ClaimHistory ch ON bc.ClaimPublicID = ch.ClaimID
WHERE ch.PreviousStatus = 'Closed' AND ch.Status <> 'Closed'; 步骤
- 确认贵组织已为ClaimCenter环境启用Guidewire Cloud Data Access(CDA)Snowflake数据共享,并向Guidewire Cloud管理员获取Snowflake账户标识符、数据库、架构、虚拟仓库、角色、身份验证方式和获准的网络配置。
- 确认数据共享中公开的CDA数据库对象和列的准确名称。CDA架构和列名可能因环境、版本、配置及数据共享模式而异。请将查询中每个方括号括起的对象或列占位符替换为您环境中的对应对象。不要假定ClaimCenter业务实体名称在Snowflake中保持不变。
- 确定理赔创建、理赔分配历史、风险标的创建、准备金交易、活动、风险标的状态历史、付款状态历史和理赔状态历史的数据源。如果数据共享未公开历史表或审计记录,请配置获准的数据源,确保保留每次所需状态变更的原值、新值、事件时间戳和操作人。
- 使用获准的Snowflake客户端、工作表、笔记本或SQL执行工具连接CDA Snowflake共享。尽可能使用只读角色。在查询中使用[Start timestamp]和[End timestamp]设置分析的开始和结束时间戳,并通过[Company filter]应用获准的公司或业务单元筛选条件。
- 将查询中的数据源占位符替换为已核实的CDA对象和列名。查询会明确生成全部14项必需活动的记录:理赔创建、理赔分配、风险标的创建、设置初始准备金、开始调查、请求补充信息、收到补充信息、作出责任判定、计算和解金额、批准付款、发出付款、拒绝理赔、关闭理赔和重新开启理赔。
- 执行查询并检查结果架构。输出必须包含ClaimID、ActivityName、EventTime、AssignedAdjuster、ClaimType、ClaimStatus和LossCause。ProcessMind要求提供ClaimID、ActivityName和EventTime。每个事件保留一行,不要按理赔汇总事件。
- 导出前验证时间戳、状态变更、分配变更、重复记录处理方式和活动数量。确认事件时间戳使用统一时区;如果同一时间戳对应不同业务活动,请保留为多行。
- 将结果导出为UTF-8编码的CSV或其他ProcessMind支持的表格格式。将ClaimID映射为案例标识符,ActivityName映射为活动,EventTime映射为事件时间戳。将推荐属性作为其他事件属性保留,并将文件上传到ProcessMind,不要添加本次提取范围之外的推断活动。
配置
- 连接和授权:通过获准的Snowflake账户、角色、虚拟仓库和网络路径访问Guidewire提供的Snowflake数据共享。从使用方角度看,CDA为只读。所需访问权限取决于环境配置,可能包括查询共享数据库及指定架构或视图的权限。
- 数据源对象配置:将所有方括号括起的数据源引用替换为CDA共享中已核实的对象。查询不会假定ClaimCenter表名或列名通用,因为公开的CDA结构因版本和环境而异。
- 日期范围:先选择三至六个月的数据进行验证和运营分析。确认虚拟仓库容量、事件历史保留期限和可接受的查询时长后,再扩大范围。请按相关事件时间戳筛选源记录,而不只是按理赔创建日期筛选,以免遗漏后续活动。
- 必需输出:每条事件记录都必须包含非空的ClaimID、ActivityName和EventTime。ActivityName必须使用ProcessMind流程模型要求的准确标签。
- 推荐输出:建议包含AssignedAdjuster、ClaimType、ClaimStatus和LossCause。条件允许时,可使用事件发生时的快照值。如果只能获取当前状态值,请记录这一限制,因为历史属性可能无法反映事件发生时的值。
- 筛选条件:仅在确认[Company filter]对应的环境专属公司、组织、业务单元或法人实体列后应用该筛选条件。除非ClaimCenter配置公开了与所需活动相关且已核实的文档类型字段,否则不要按文档类型筛选。
- 事件历史:要识别分配、调查、信息请求、责任判定、付款状态和理赔重新开启等状态变更,需要历史或审计数据。仅凭当前状态表无法可靠还原以往事件。
- 去重:如有经过核实的源事件标识符,请使用该标识符。查询中的ROW_NUMBER仅作为可配置的保护措施。如果不同活动可能在同一时间发生,不要仅按ClaimID和时间戳去重。
- 性能:缩小日期范围,仅选择必需列,按事件时间戳筛选各数据源,并使用大小适当的Snowflake虚拟仓库。对于大数据量,可考虑生成经过验证的事件视图或采用增量提取。
- 时区:将EventTime统一为一种有明确说明的时区。加载事件日志前,请确认CDA时间戳采用UTC、本地时间还是Snowflake时间戳类型。
- 前提条件:确认共享中包含所需的ClaimCenter财务、活动、分配、风险标的、付款和状态历史数据,并且数据保留策略能够保留所需的历史状态变更。
查询示例 sql
WITH
params AS (
SELECT
TO_TIMESTAMP_TZ('[Start timestamp]') AS start_ts,
TO_TIMESTAMP_TZ('[End timestamp]') AS end_ts
),
claim_created AS (
SELECT
CAST(c.[Claim ID column] AS VARCHAR) AS ClaimID,
'Claim Created' AS ActivityName,
CAST(c.[Claim created timestamp column] AS TIMESTAMP_TZ) AS EventTime,
CAST(c.[Assigned adjuster column] AS VARCHAR) AS AssignedAdjuster,
CAST(c.[Claim type column] AS VARCHAR) AS ClaimType,
CAST(c.[Claim status column] AS VARCHAR) AS ClaimStatus,
CAST(c.[Loss cause column] AS VARCHAR) AS LossCause,
CAST(c.[Claim event identifier column] AS VARCHAR) AS SourceEventID
FROM [Your claim source object] c
CROSS JOIN params p
WHERE c.[Claim created timestamp column] >= p.start_ts
AND c.[Claim created timestamp column] < p.end_ts
AND [Company filter]
),
claim_assigned AS (
SELECT
CAST(h.[Claim ID column] AS VARCHAR) AS ClaimID,
'Claim Assigned' AS ActivityName,
CAST(h.[Assignment event timestamp column] AS TIMESTAMP_TZ) AS EventTime,
CAST(h.[New assigned adjuster column] AS VARCHAR) AS AssignedAdjuster,
CAST(h.[Claim type column] AS VARCHAR) AS ClaimType,
CAST(h.[Claim status column] AS VARCHAR) AS ClaimStatus,
CAST(h.[Loss cause column] AS VARCHAR) AS LossCause,
CAST(h.[Assignment event identifier column] AS VARCHAR) AS SourceEventID
FROM [Your claim assignment history object] h
CROSS JOIN params p
WHERE h.[Assignment event timestamp column] >= p.start_ts
AND h.[Assignment event timestamp column] < p.end_ts
AND h.[New assigned adjuster column] IS DISTINCT FROM h.[Previous assigned adjuster column]
AND [Company filter]
),
exposure_created AS (
SELECT
CAST(e.[Claim ID column] AS VARCHAR) AS ClaimID,
'Exposure Created' AS ActivityName,
CAST(e.[Exposure created timestamp column] AS TIMESTAMP_TZ) AS EventTime,
CAST(e.[Assigned adjuster column] AS VARCHAR) AS AssignedAdjuster,
CAST(e.[Claim type column] AS VARCHAR) AS ClaimType,
CAST(e.[Claim status column] AS VARCHAR) AS ClaimStatus,
CAST(e.[Loss cause column] AS VARCHAR) AS LossCause,
CAST(e.[Exposure event identifier column] AS VARCHAR) AS SourceEventID
FROM [Your exposure source object] e
CROSS JOIN params p
WHERE e.[Exposure created timestamp column] >= p.start_ts
AND e.[Exposure created timestamp column] < p.end_ts
AND [Company filter]
),
initial_reserve_set AS (
SELECT
CAST(r.[Claim ID column] AS VARCHAR) AS ClaimID,
'Initial Reserve Set' AS ActivityName,
CAST(r.[Reserve transaction timestamp column] AS TIMESTAMP_TZ) AS EventTime,
CAST(r.[Assigned adjuster column] AS VARCHAR) AS AssignedAdjuster,
CAST(r.[Claim type column] AS VARCHAR) AS ClaimType,
CAST(r.[Claim status column] AS VARCHAR) AS ClaimStatus,
CAST(r.[Loss cause column] AS VARCHAR) AS LossCause,
CAST(r.[Reserve transaction identifier column] AS VARCHAR) AS SourceEventID
FROM [Your reserve transaction source object] r
CROSS JOIN params p
WHERE r.[Reserve transaction timestamp column] >= p.start_ts
AND r.[Reserve transaction timestamp column] < p.end_ts
AND r.[Reserve transaction sequence or first reserve indicator column] = [Value identifying first reserve]
AND [Company filter]
),
investigation_started AS (
SELECT
CAST(a.[Claim ID column] AS VARCHAR) AS ClaimID,
'Investigation Started' AS ActivityName,
CAST(a.[Activity created timestamp column] AS TIMESTAMP_TZ) AS EventTime,
CAST(a.[Activity assigned user column] AS VARCHAR) AS AssignedAdjuster,
CAST(a.[Claim type column] AS VARCHAR) AS ClaimType,
CAST(a.[Claim status column] AS VARCHAR) AS ClaimStatus,
CAST(a.[Loss cause column] AS VARCHAR) AS LossCause,
CAST(a.[Activity identifier column] AS VARCHAR) AS SourceEventID
FROM [Your activity source object] a
CROSS JOIN params p
WHERE a.[Activity created timestamp column] >= p.start_ts
AND a.[Activity created timestamp column] < p.end_ts
AND a.[Activity category or type column] = '[Configured investigation activity value]'
AND [Company filter]
),
additional_info_requested AS (
SELECT
CAST(a.[Claim ID column] AS VARCHAR) AS ClaimID,
'Additional Info Requested' AS ActivityName,
CAST(a.[Activity created timestamp column] AS TIMESTAMP_TZ) AS EventTime,
CAST(a.[Activity assigned user column] AS VARCHAR) AS AssignedAdjuster,
CAST(a.[Claim type column] AS VARCHAR) AS ClaimType,
CAST(a.[Claim status column] AS VARCHAR) AS ClaimStatus,
CAST(a.[Loss cause column] AS VARCHAR) AS LossCause,
CAST(a.[Activity identifier column] AS VARCHAR) AS SourceEventID
FROM [Your activity source object] a
CROSS JOIN params p
WHERE a.[Activity created timestamp column] >= p.start_ts
AND a.[Activity created timestamp column] < p.end_ts
AND a.[Activity category or type column] = '[Configured additional information request value]'
AND [Company filter]
),
additional_info_received AS (
SELECT
CAST(a.[Claim ID column] AS VARCHAR) AS ClaimID,
'Additional Info Received' AS ActivityName,
CAST(a.[Activity completion timestamp column] AS TIMESTAMP_TZ) AS EventTime,
CAST(a.[Activity assigned user column] AS VARCHAR) AS AssignedAdjuster,
CAST(a.[Claim type column] AS VARCHAR) AS ClaimType,
CAST(a.[Claim status column] AS VARCHAR) AS ClaimStatus,
CAST(a.[Loss cause column] AS VARCHAR) AS LossCause,
CAST(a.[Activity identifier column] AS VARCHAR) AS SourceEventID
FROM [Your activity source object] a
CROSS JOIN params p
WHERE a.[Activity completion timestamp column] >= p.start_ts
AND a.[Activity completion timestamp column] < p.end_ts
AND a.[Activity category or type column] = '[Configured additional information request value]'
AND a.[Activity status column] = '[Configured completed status value]'
AND [Company filter]
),
liability_decision_made AS (
SELECT
CAST(eh.[Claim ID column] AS VARCHAR) AS ClaimID,
'Liability Decision Made' AS ActivityName,
CAST(eh.[Exposure status event timestamp column] AS TIMESTAMP_TZ) AS EventTime,
CAST(eh.[Assigned adjuster column] AS VARCHAR) AS AssignedAdjuster,
CAST(eh.[Claim type column] AS VARCHAR) AS ClaimType,
CAST(eh.[Claim status column] AS VARCHAR) AS ClaimStatus,
CAST(eh.[Loss cause column] AS VARCHAR) AS LossCause,
CAST(eh.[Exposure status event identifier column] AS VARCHAR) AS SourceEventID
FROM [Your exposure status history object] eh
CROSS JOIN params p
WHERE eh.[Exposure status event timestamp column] >= p.start_ts
AND eh.[Exposure status event timestamp column] < p.end_ts
AND eh.[New exposure status column] = '[Configured liability decision status value]'
AND eh.[New exposure status column] IS DISTINCT FROM eh.[Previous exposure status column]
AND [Company filter]
),
settlement_calculated AS (
SELECT
CAST(pay.[Claim ID column] AS VARCHAR) AS ClaimID,
'Settlement Calculated' AS ActivityName,
CAST(pay.[Payment created timestamp column] AS TIMESTAMP_TZ) AS EventTime,
CAST(pay.[Assigned adjuster column] AS VARCHAR) AS AssignedAdjuster,
CAST(pay.[Claim type column] AS VARCHAR) AS ClaimType,
CAST(pay.[Claim status column] AS VARCHAR) AS ClaimStatus,
CAST(pay.[Loss cause column] AS VARCHAR) AS LossCause,
CAST(pay.[Payment identifier column] AS VARCHAR) AS SourceEventID
FROM [Your payment source object] pay
CROSS JOIN params p
WHERE pay.[Payment created timestamp column] >= p.start_ts
AND pay.[Payment created timestamp column] < p.end_ts
AND pay.[Payment status column] = '[Configured pending approval status value]'
AND [Company filter]
),
payment_approved AS (
SELECT
CAST(ph.[Claim ID column] AS VARCHAR) AS ClaimID,
'Payment Approved' AS ActivityName,
CAST(ph.[Payment approval timestamp column] AS TIMESTAMP_TZ) AS EventTime,
CAST(ph.[Approving user column] AS VARCHAR) AS AssignedAdjuster,
CAST(ph.[Claim type column] AS VARCHAR) AS ClaimType,
CAST(ph.[Claim status column] AS VARCHAR) AS ClaimStatus,
CAST(ph.[Loss cause column] AS VARCHAR) AS LossCause,
CAST(ph.[Payment status event identifier column] AS VARCHAR) AS SourceEventID
FROM [Your payment status history object] ph
CROSS JOIN params p
WHERE ph.[Payment approval timestamp column] >= p.start_ts
AND ph.[Payment approval timestamp column] < p.end_ts
AND ph.[New payment status column] = '[Configured approved status value]'
AND ph.[New payment status column] IS DISTINCT FROM ph.[Previous payment status column]
AND [Company filter]
),
payment_issued AS (
SELECT
CAST(ph.[Claim ID column] AS VARCHAR) AS ClaimID,
'Payment Issued' AS ActivityName,
CAST(ph.[Payment issued timestamp column] AS TIMESTAMP_TZ) AS EventTime,
CAST(ph.[Issuing user column] AS VARCHAR) AS AssignedAdjuster,
CAST(ph.[Claim type column] AS VARCHAR) AS ClaimType,
CAST(ph.[Claim status column] AS VARCHAR) AS ClaimStatus,
CAST(ph.[Loss cause column] AS VARCHAR) AS LossCause,
CAST(ph.[Payment status event identifier column] AS VARCHAR) AS SourceEventID
FROM [Your payment status history object] ph
CROSS JOIN params p
WHERE ph.[Payment issued timestamp column] >= p.start_ts
AND ph.[Payment issued timestamp column] < p.end_ts
AND ph.[New payment status column] = '[Configured issued status value]'
AND ph.[New payment status column] IS DISTINCT FROM ph.[Previous payment status column]
AND [Company filter]
),
claim_denied AS (
SELECT
CAST(ch.[Claim ID column] AS VARCHAR) AS ClaimID,
'Claim Denied' AS ActivityName,
CAST(ch.[Claim status event timestamp column] AS TIMESTAMP_TZ) AS EventTime,
CAST(ch.[Assigned adjuster column] AS VARCHAR) AS AssignedAdjuster,
CAST(ch.[Claim type column] AS VARCHAR) AS ClaimType,
CAST(ch.[New claim status column] AS VARCHAR) AS ClaimStatus,
CAST(ch.[Loss cause column] AS VARCHAR) AS LossCause,
CAST(ch.[Claim status event identifier column] AS VARCHAR) AS SourceEventID
FROM [Your claim status history object] ch
CROSS JOIN params p
WHERE ch.[Claim status event timestamp column] >= p.start_ts
AND ch.[Claim status event timestamp column] < p.end_ts
AND ch.[New claim status column] = '[Configured closed status value]'
AND ch.[Claim closure reason column] = '[Configured denied reason value]'
AND ch.[New claim status column] IS DISTINCT FROM ch.[Previous claim status column]
AND [Company filter]
),
claim_closed AS (
SELECT
CAST(ch.[Claim ID column] AS VARCHAR) AS ClaimID,
'Claim Closed' AS ActivityName,
CAST(ch.[Claim status event timestamp column] AS TIMESTAMP_TZ) AS EventTime,
CAST(ch.[Assigned adjuster column] AS VARCHAR) AS AssignedAdjuster,
CAST(ch.[Claim type column] AS VARCHAR) AS ClaimType,
CAST(ch.[New claim status column] AS VARCHAR) AS ClaimStatus,
CAST(ch.[Loss cause column] AS VARCHAR) AS LossCause,
CAST(ch.[Claim status event identifier column] AS VARCHAR) AS SourceEventID
FROM [Your claim status history object] ch
CROSS JOIN params p
WHERE ch.[Claim status event timestamp column] >= p.start_ts
AND ch.[Claim status event timestamp column] < p.end_ts
AND ch.[New claim status column] = '[Configured closed status value]'
AND COALESCE(ch.[Claim closure reason column], '') <> '[Configured denied reason value]'
AND ch.[New claim status column] IS DISTINCT FROM ch.[Previous claim status column]
AND [Company filter]
),
claim_reopened AS (
SELECT
CAST(ch.[Claim ID column] AS VARCHAR) AS ClaimID,
'Claim Reopened' AS ActivityName,
CAST(ch.[Claim status event timestamp column] AS TIMESTAMP_TZ) AS EventTime,
CAST(ch.[Assigned adjuster column] AS VARCHAR) AS AssignedAdjuster,
CAST(ch.[Claim type column] AS VARCHAR) AS ClaimType,
CAST(ch.[New claim status column] AS VARCHAR) AS ClaimStatus,
CAST(ch.[Loss cause column] AS VARCHAR) AS LossCause,
CAST(ch.[Claim status event identifier column] AS VARCHAR) AS SourceEventID
FROM [Your claim status history object] ch
CROSS JOIN params p
WHERE ch.[Claim status event timestamp column] >= p.start_ts
AND ch.[Claim status event timestamp column] < p.end_ts
AND ch.[Previous claim status column] = '[Configured closed status value]'
AND ch.[New claim status column] = '[Configured open status value]'
AND ch.[New claim status column] IS DISTINCT FROM ch.[Previous claim status column]
AND [Company filter]
),
all_events AS (
SELECT * FROM claim_created
UNION ALL SELECT * FROM claim_assigned
UNION ALL SELECT * FROM exposure_created
UNION ALL SELECT * FROM initial_reserve_set
UNION ALL SELECT * FROM investigation_started
UNION ALL SELECT * FROM additional_info_requested
UNION ALL SELECT * FROM additional_info_received
UNION ALL SELECT * FROM liability_decision_made
UNION ALL SELECT * FROM settlement_calculated
UNION ALL SELECT * FROM payment_approved
UNION ALL SELECT * FROM payment_issued
UNION ALL SELECT * FROM claim_denied
UNION ALL SELECT * FROM claim_closed
UNION ALL SELECT * FROM claim_reopened
),
deduplicated_events AS (
SELECT
ClaimID,
ActivityName,
EventTime,
AssignedAdjuster,
ClaimType,
ClaimStatus,
LossCause,
SourceEventID,
ROW_NUMBER() OVER (
PARTITION BY ActivityName, COALESCE(SourceEventID, ClaimID || '|' || TO_VARCHAR(EventTime))
ORDER BY EventTime
) AS duplicate_rank
FROM all_events
WHERE ClaimID IS NOT NULL
AND ActivityName IS NOT NULL
AND EventTime IS NOT NULL
)
SELECT
ClaimID,
ActivityName,
EventTime,
AssignedAdjuster,
ClaimType,
ClaimStatus,
LossCause
FROM deduplicated_events
WHERE duplicate_rank = 1
ORDER BY ClaimID, EventTime, ActivityName; 步骤
- 确认已获准直接只读访问本地部署的Guidewire ClaimCenter运营数据库,并已记录数据库平台和架构版本,且可使用只读连接。未经批准的提取时段,不要查询生产数据库。
- 确认ClaimCenter实施中的物理表和列。将理赔、风险标的、活动、分配、准备金、付款、状态历史以及用户或组实体映射到查询中的占位符。由于物理名称和审计结构因实施方式和版本而异,请先根据数据库目录和ClaimCenter数据模型核实,再替换各占位符。
- 使用[Start date parameter]和[End date parameter]定义提取时段。如果状态变更、任务完成或财务交易可能在主要理赔创建时段之外记录,请设置滚动重叠期,例如从所需开始日期前一至两天起提取。
- 使用只读权限执行完整SQL语句。每项活动都会作为独立事件行输出,ProcessMind不会在数据载入后推断事件。根据字段变更推断的事件会在SQL语句中根据相关历史或审计记录生成。
- 验证每项活动的数据源映射。确认理赔创建取自首次保存的理赔记录,分配取自分配变更,风险标的创建取自创建记录,初始准备金取自每个风险标的的首笔准备金交易,调查和信息请求取自活动记录,责任判定取自配置的风险标的状态变更,和解取自待批准的付款状态,付款批准和发出则分别取自对应的财务审计状态。
- 将输出整理为所需的事件日志结构。ClaimID必须作为案例标识符,ActivityName必须准确包含14个已记录活动名称之一,EventTime必须为时间戳。若数据源映射支持,请保留AssignedAdjuster、ClaimType、ClaimStatus和LossCause等推荐属性。
- 检查重复事件和事件顺序。如果同一业务状态变更在源数据中有多条审计记录,请在相关公用表表达式中使用符合具体实施方式的去重键。不要合并时间戳或源标识符不同的业务事件。
- 将结果导出为UTF-8编码的CSV或其他ProcessMind支持的表格格式。表头应包含ClaimID、ActivityName、EventTime、AssignedAdjuster、ClaimType、ClaimStatus和LossCause。确保时间戳包含时区信息,或统一使用有明确说明的数据库时区。将文件上传到ProcessMind,并将ClaimID映射为案例标识符、ActivityName映射为活动、EventTime映射为事件时间戳。
配置
- 数据库访问:使用只读账户查询所需的ClaimCenter运营表、历史表、活动表和财务交易表。提取数据时不要授予写入、架构修改或管理员权限。
- 架构映射:将[Your claim table]、[Your exposure table]、[Your activity table]、[Your reserve table]、[Your payment table]、[Your claim history table]、[Your exposure history table]及相关占位符替换为目标实施环境中已核实的名称。不要假定Guidewire逻辑实体名称就是物理数据库表名。
- 日期范围:先提取三至六个月的数据。使用[Start date parameter]和[End date parameter];如果事件可能在理赔创建后记录,或重新开启的理赔跨越多个报告期,请设置重叠时段。
- 筛选条件:只有在确认物理列及其业务含义后,才应用[Company Code filter]、[Document Type filter]、司法管辖区、业务线或其他组织专属筛选条件。不要排除没有付款或没有风险标的的理赔,否则无法完整分析其生命周期。
- 活动名称:严格使用查询中定义的14个ActivityName值,确保ProcessMind接收的事件标签一致。
- 事件含义:标记为推断的活动,是在SQL中根据源状态、分配、历史记录或活动变更生成的。数据载入后,ProcessMind不会根据其他记录推导这些事件。
- 性能:限制提取时段,仅选择必需列,在联接前筛选源表,并检查理赔标识符、风险标的标识符、事件时间戳、状态字段和交易标识符是否已建立索引。如有报表副本,请使用该副本执行大型提取任务。
- 一致性:使用适合报表查询的事务隔离级别,并确定一致的提取边界。避免在财务批处理或批量状态更新尚未完成时读取数据表。
- 时区:记录数据库时区,并在导出前将所有源时间戳转换为约定时区。不要混用应用程序本地时间和数据库服务器时间。
- 前提条件:确认所需的ClaimCenter模块、财务权限、审计或历史记录保留策略以及数据库连接均已就绪。如果未启用历史或审计记录保留,则无法可靠还原相应的推断活动。
- 验证配置:每次导出时记录ClaimCenter版本、数据库平台、架构映射、提取时间戳、日期参数、筛选条件和行数。
查询示例 sql
WITH
claim_created AS (
SELECT
c.[Claim ID column] AS ClaimID,
CAST('Claim Created' AS VARCHAR(100)) AS ActivityName,
c.[Claim Created Timestamp column] AS EventTime,
c.[Assigned Adjuster column] AS AssignedAdjuster,
c.[Claim Type column] AS ClaimType,
c.[Claim Status column] AS ClaimStatus,
c.[Loss Cause column] AS LossCause
FROM [Your claim table] c
WHERE c.[Claim Created Timestamp column] >= [Start date parameter]
AND c.[Claim Created Timestamp column] < [End date parameter]
),
claim_assigned AS (
SELECT
h.[Claim ID column] AS ClaimID,
CAST('Claim Assigned' AS VARCHAR(100)) AS ActivityName,
h.[Assignment Change Timestamp column] AS EventTime,
h.[Assigned Adjuster column] AS AssignedAdjuster,
c.[Claim Type column] AS ClaimType,
h.[Claim Status column] AS ClaimStatus,
c.[Loss Cause column] AS LossCause
FROM [Your claim assignment history table] h
INNER JOIN [Your claim table] c
ON c.[Claim ID column] = h.[Claim ID column]
WHERE h.[Assignment Change Timestamp column] >= [Start date parameter]
AND h.[Assignment Change Timestamp column] < [End date parameter]
AND h.[Assigned Adjuster column] IS NOT NULL
),
exposure_created AS (
SELECT
e.[Claim ID column] AS ClaimID,
CAST('Exposure Created' AS VARCHAR(100)) AS ActivityName,
e.[Exposure Created Timestamp column] AS EventTime,
c.[Assigned Adjuster column] AS AssignedAdjuster,
c.[Claim Type column] AS ClaimType,
c.[Claim Status column] AS ClaimStatus,
c.[Loss Cause column] AS LossCause
FROM [Your exposure table] e
INNER JOIN [Your claim table] c
ON c.[Claim ID column] = e.[Claim ID column]
WHERE e.[Exposure Created Timestamp column] >= [Start date parameter]
AND e.[Exposure Created Timestamp column] < [End date parameter]
),
initial_reserve_set AS (
SELECT
x.ClaimID,
CAST('Initial Reserve Set' AS VARCHAR(100)) AS ActivityName,
x.EventTime,
x.AssignedAdjuster,
x.ClaimType,
x.ClaimStatus,
x.LossCause
FROM (
SELECT
r.[Claim ID column] AS ClaimID,
r.[Reserve Timestamp column] AS EventTime,
c.[Assigned Adjuster column] AS AssignedAdjuster,
c.[Claim Type column] AS ClaimType,
c.[Claim Status column] AS ClaimStatus,
c.[Loss Cause column] AS LossCause,
ROW_NUMBER() OVER (
PARTITION BY r.[Exposure ID column]
ORDER BY r.[Reserve Timestamp column], r.[Reserve Transaction ID column]
) AS reserve_sequence
FROM [Your reserve transaction table] r
INNER JOIN [Your claim table] c
ON c.[Claim ID column] = r.[Claim ID column]
WHERE r.[Reserve Timestamp column] >= [Start date parameter]
AND r.[Reserve Timestamp column] < [End date parameter]
) x
WHERE x.reserve_sequence = 1
),
investigation_started AS (
SELECT
a.[Claim ID column] AS ClaimID,
CAST('Investigation Started' AS VARCHAR(100)) AS ActivityName,
a.[Activity Created Timestamp column] AS EventTime,
a.[Assigned User column] AS AssignedAdjuster,
c.[Claim Type column] AS ClaimType,
c.[Claim Status column] AS ClaimStatus,
c.[Loss Cause column] AS LossCause
FROM [Your activity table] a
INNER JOIN [Your claim table] c
ON c.[Claim ID column] = a.[Claim ID column]
WHERE a.[Activity Created Timestamp column] >= [Start date parameter]
AND a.[Activity Created Timestamp column] < [End date parameter]
AND a.[Activity Type column] IN ([Investigation activity type value])
),
additional_info_requested AS (
SELECT
a.[Claim ID column] AS ClaimID,
CAST('Additional Info Requested' AS VARCHAR(100)) AS ActivityName,
a.[Activity Created Timestamp column] AS EventTime,
a.[Assigned User column] AS AssignedAdjuster,
c.[Claim Type column] AS ClaimType,
c.[Claim Status column] AS ClaimStatus,
c.[Loss Cause column] AS LossCause
FROM [Your activity table] a
INNER JOIN [Your claim table] c
ON c.[Claim ID column] = a.[Claim ID column]
WHERE a.[Activity Created Timestamp column] >= [Start date parameter]
AND a.[Activity Created Timestamp column] < [End date parameter]
AND a.[Activity Type column] IN ([Additional information request activity type value])
),
additional_info_received AS (
SELECT
a.[Claim ID column] AS ClaimID,
CAST('Additional Info Received' AS VARCHAR(100)) AS ActivityName,
a.[Activity Completed Timestamp column] AS EventTime,
a.[Assigned User column] AS AssignedAdjuster,
c.[Claim Type column] AS ClaimType,
c.[Claim Status column] AS ClaimStatus,
c.[Loss Cause column] AS LossCause
FROM [Your activity table] a
INNER JOIN [Your claim table] c
ON c.[Claim ID column] = a.[Claim ID column]
WHERE a.[Activity Completed Timestamp column] >= [Start date parameter]
AND a.[Activity Completed Timestamp column] < [End date parameter]
AND a.[Activity Type column] IN ([Additional information request activity type value])
AND a.[Activity Status column] = [Completed activity status value]
),
liability_decision_made AS (
SELECT
h.[Claim ID column] AS ClaimID,
CAST('Liability Decision Made' AS VARCHAR(100)) AS ActivityName,
h.[Status Change Timestamp column] AS EventTime,
c.[Assigned Adjuster column] AS AssignedAdjuster,
c.[Claim Type column] AS ClaimType,
c.[Claim Status column] AS ClaimStatus,
c.[Loss Cause column] AS LossCause
FROM [Your exposure status history table] h
INNER JOIN [Your claim table] c
ON c.[Claim ID column] = h.[Claim ID column]
WHERE h.[Status Change Timestamp column] >= [Start date parameter]
AND h.[Status Change Timestamp column] < [End date parameter]
AND h.[New Exposure Status column] IN ([Liability decision status value])
),
settlement_calculated AS (
SELECT
p.[Claim ID column] AS ClaimID,
CAST('Settlement Calculated' AS VARCHAR(100)) AS ActivityName,
p.[Payment Status Timestamp column] AS EventTime,
c.[Assigned Adjuster column] AS AssignedAdjuster,
c.[Claim Type column] AS ClaimType,
c.[Claim Status column] AS ClaimStatus,
c.[Loss Cause column] AS LossCause
FROM [Your payment table] p
INNER JOIN [Your claim table] c
ON c.[Claim ID column] = p.[Claim ID column]
WHERE p.[Payment Status Timestamp column] >= [Start date parameter]
AND p.[Payment Status Timestamp column] < [End date parameter]
AND p.[Payment Status column] = [Pending approval payment status value]
),
payment_approved AS (
SELECT
p.[Claim ID column] AS ClaimID,
CAST('Payment Approved' AS VARCHAR(100)) AS ActivityName,
p.[Approval Timestamp column] AS EventTime,
p.[Approved By column] AS AssignedAdjuster,
c.[Claim Type column] AS ClaimType,
c.[Claim Status column] AS ClaimStatus,
c.[Loss Cause column] AS LossCause
FROM [Your payment approval history table] p
INNER JOIN [Your claim table] c
ON c.[Claim ID column] = p.[Claim ID column]
WHERE p.[Approval Timestamp column] >= [Start date parameter]
AND p.[Approval Timestamp column] < [End date parameter]
AND p.[Approval Status column] = [Approved payment status value]
),
payment_issued AS (
SELECT
p.[Claim ID column] AS ClaimID,
CAST('Payment Issued' AS VARCHAR(100)) AS ActivityName,
p.[Issued Timestamp column] AS EventTime,
p.[Approved By column] AS AssignedAdjuster,
c.[Claim Type column] AS ClaimType,
c.[Claim Status column] AS ClaimStatus,
c.[Loss Cause column] AS LossCause
FROM [Your payment issuance table] p
INNER JOIN [Your claim table] c
ON c.[Claim ID column] = p.[Claim ID column]
WHERE p.[Issued Timestamp column] >= [Start date parameter]
AND p.[Issued Timestamp column] < [End date parameter]
AND p.[Payment Status column] = [Issued payment status value]
),
claim_denied AS (
SELECT
h.[Claim ID column] AS ClaimID,
CAST('Claim Denied' AS VARCHAR(100)) AS ActivityName,
h.[Status Change Timestamp column] AS EventTime,
c.[Assigned Adjuster column] AS AssignedAdjuster,
c.[Claim Type column] AS ClaimType,
h.[New Claim Status column] AS ClaimStatus,
c.[Loss Cause column] AS LossCause
FROM [Your claim status history table] h
INNER JOIN [Your claim table] c
ON c.[Claim ID column] = h.[Claim ID column]
WHERE h.[Status Change Timestamp column] >= [Start date parameter]
AND h.[Status Change Timestamp column] < [End date parameter]
AND h.[New Claim Status column] = [Closed claim status value]
AND h.[Status Reason column] = [Denied status reason value]
),
claim_closed AS (
SELECT
h.[Claim ID column] AS ClaimID,
CAST('Claim Closed' AS VARCHAR(100)) AS ActivityName,
h.[Status Change Timestamp column] AS EventTime,
c.[Assigned Adjuster column] AS AssignedAdjuster,
c.[Claim Type column] AS ClaimType,
h.[New Claim Status column] AS ClaimStatus,
c.[Loss Cause column] AS LossCause
FROM [Your claim status history table] h
INNER JOIN [Your claim table] c
ON c.[Claim ID column] = h.[Claim ID column]
WHERE h.[Status Change Timestamp column] >= [Start date parameter]
AND h.[Status Change Timestamp column] < [End date parameter]
AND h.[New Claim Status column] = [Closed claim status value]
AND h.[Status Reason column] <> [Denied status reason value]
),
claim_reopened AS (
SELECT
h.[Claim ID column] AS ClaimID,
CAST('Claim Reopened' AS VARCHAR(100)) AS ActivityName,
h.[Status Change Timestamp column] AS EventTime,
c.[Assigned Adjuster column] AS AssignedAdjuster,
c.[Claim Type column] AS ClaimType,
h.[New Claim Status column] AS ClaimStatus,
c.[Loss Cause column] AS LossCause
FROM [Your claim status history table] h
INNER JOIN [Your claim status history table] previous_h
ON previous_h.[Claim ID column] = h.[Claim ID column]
AND previous_h.[Status Change Timestamp column] = (
SELECT MAX(prior_h.[Status Change Timestamp column])
FROM [Your claim status history table] prior_h
WHERE prior_h.[Claim ID column] = h.[Claim ID column]
AND prior_h.[Status Change Timestamp column] < h.[Status Change Timestamp column]
)
INNER JOIN [Your claim table] c
ON c.[Claim ID column] = h.[Claim ID column]
WHERE h.[Status Change Timestamp column] >= [Start date parameter]
AND h.[Status Change Timestamp column] < [End date parameter]
AND previous_h.[New Claim Status column] = [Closed claim status value]
AND h.[New Claim Status column] = [Open claim status value]
)
SELECT ClaimID, ActivityName, EventTime, AssignedAdjuster, ClaimType, ClaimStatus, LossCause FROM claim_created
UNION ALL
SELECT ClaimID, ActivityName, EventTime, AssignedAdjuster, ClaimType, ClaimStatus, LossCause FROM claim_assigned
UNION ALL
SELECT ClaimID, ActivityName, EventTime, AssignedAdjuster, ClaimType, ClaimStatus, LossCause FROM exposure_created
UNION ALL
SELECT ClaimID, ActivityName, EventTime, AssignedAdjuster, ClaimType, ClaimStatus, LossCause FROM initial_reserve_set
UNION ALL
SELECT ClaimID, ActivityName, EventTime, AssignedAdjuster, ClaimType, ClaimStatus, LossCause FROM investigation_started
UNION ALL
SELECT ClaimID, ActivityName, EventTime, AssignedAdjuster, ClaimType, ClaimStatus, LossCause FROM additional_info_requested
UNION ALL
SELECT ClaimID, ActivityName, EventTime, AssignedAdjuster, ClaimType, ClaimStatus, LossCause FROM additional_info_received
UNION ALL
SELECT ClaimID, ActivityName, EventTime, AssignedAdjuster, ClaimType, ClaimStatus, LossCause FROM liability_decision_made
UNION ALL
SELECT ClaimID, ActivityName, EventTime, AssignedAdjuster, ClaimType, ClaimStatus, LossCause FROM settlement_calculated
UNION ALL
SELECT ClaimID, ActivityName, EventTime, AssignedAdjuster, ClaimType, ClaimStatus, LossCause FROM payment_approved
UNION ALL
SELECT ClaimID, ActivityName, EventTime, AssignedAdjuster, ClaimType, ClaimStatus, LossCause FROM payment_issued
UNION ALL
SELECT ClaimID, ActivityName, EventTime, AssignedAdjuster, ClaimType, ClaimStatus, LossCause FROM claim_denied
UNION ALL
SELECT ClaimID, ActivityName, EventTime, AssignedAdjuster, ClaimType, ClaimStatus, LossCause FROM claim_closed
UNION ALL
SELECT ClaimID, ActivityName, EventTime, AssignedAdjuster, ClaimType, ClaimStatus, LossCause FROM claim_reopened
ORDER BY ClaimID, EventTime, ActivityName; 加快理赔处理,更快结案
清理积压、预防欺诈,并以70%的直通处理率为目标。
无需信用卡,几分钟即可完成设置。