보험금 청구 처리 데이터 템플릿
보험금 청구 처리 데이터 템플릿
- 수집 권장 속성
- 추적할 주요 활동
- Guidewire ClaimCenter 데이터 추출 안내
보험금 청구 처리 속성
| 이름 | 설명 | ||
|---|---|---|---|
| Claim ID ClaimID | 각 보험금 청구 건을 고유하게 식별하는 기본 사례 식별자입니다. | ||
| 설명 Claim ID는 청구 접수부터 종결까지 각 사례를 고유하게 식별하는 값으로, 청구 프로세스 분석의 기준이 됩니다. 관련된 모든 활동과 문서, 지급, 소통 내역을 연결해 청구 처리 주기를 빠짐없이 일관되게 파악할 수 있습니다. process mining에서는 데이터 세트의 모든 이벤트가 Claim ID와 연결되어 전 과정의 흐름을 재구성할 수 있습니다. 이를 바탕으로 처리 기간을 분석하고 프로세스 유형을 파악하며 여러 부서와 손해사정사에 걸친 청구 처리 과정을 추적할 수 있습니다. 중요한 이유 관련된 모든 이벤트를 연결하는 기본 키로, 단일 청구 건의 전체 처리 과정을 추적하고 분석할 수 있게 합니다. 확보 방법 Guidewire ClaimCenter의 기본 키입니다. 일반적으로 핵심 Claim 엔터티의 Claim.ClaimNumber 또는 유사한 필드에서 확인할 수 있습니다. 예시 000-123-45678000-987-65432001-456-11223 | |||
| 이벤트 시간 EventTime | 활동이 발생한 정확한 날짜와 시간입니다. | ||
| 설명 이 타임스탬프는 시스템에 활동이 기록된 정확한 시점을 나타냅니다. 시간 기반 프로세스 분석에 반드시 필요한 정보입니다. 하나의 Claim ID에 속한 EventTime을 시간순으로 정렬하면 프로세스 흐름을 재구성할 수 있습니다. 연속된 이벤트 간 시간 차이로 처리 주기, 대기 시간, 처리 시간을 계산할 수 있으며, 이는 성과 분석과 병목 파악, SLA 모니터링에 중요합니다. 중요한 이유 이 타임스탬프는 이벤트 순서를 정하고 처리 주기와 소요 시간을 계산하며 프로세스 지연을 파악하는 데 필요합니다. 확보 방법 Guidewire ClaimCenter의 이력 또는 감사 테이블에서 이벤트나 활동 데이터와 함께 확인할 수 있습니다. 보통 'CreateTime' 또는 'UpdateTime' 필드로 저장됩니다. 예시 2023-05-15T09:00:00Z2023-05-16T14:30:15Z2023-06-01T11:20:00Z | |||
| 활동 이름 ActivityName | 보험금 청구 처리 과정에서 특정 시점에 발생한 업무 활동이나 이벤트의 이름입니다. | ||
| 설명 이 속성은 보험금 청구 프로세스의 특정 단계나 주요 시점을 나타냅니다. 예를 들어 '청구 접수', '조사 시작', '보험금 지급' 등이 있습니다. 하나의 Claim ID에 해당하는 활동을 순서대로 연결하면 프로세스 흐름을 파악할 수 있습니다. 활동의 순서와 빈도, 활동 간 소요 시간을 분석하는 것은 process mining의 핵심입니다. 이를 통해 프로세스 모델을 발견하고, 병목과 재작업 루프를 찾아내며, 프로세스가 표준 흐름에서 벗어나는 양상을 분석할 수 있습니다. 중요한 이유 프로세스의 단계를 정의하여 프로세스 맵을 시각화하고 프로세스 흐름과 병목을 분석할 수 있습니다. 확보 방법 일반적으로 ClaimCenter의 이벤트 테이블이나 감사 로그에서 가져옵니다. 특정 시스템 이벤트나 상태 변경을 표준 활동명에 매핑하는 방식으로 구성하는 경우가 많습니다. 예시 청구 건 생성책임 여부 결정지급 실행청구 건 종결 | |||
| 담당 손해사정인 AssignedAdjuster | 보험금 청구 또는 특정 활동을 담당하도록 지정된 사용자의 이름이나 ID입니다. | ||
| 설명 이 속성은 특정 시점에 보험금 청구를 담당하는 손해사정인을 식별합니다. 손해사정인은 청구 건 전체를 맡거나 그 안의 특정 작업을 담당할 수 있습니다. 담당 손해사정인별 분석은 업무량 배분과 성과 관리, 교육 기회 파악에 중요합니다. '담당 건수가 가장 많은 손해사정인은 누구인가?', '손해사정인별 성과 차이가 있는가?', '업무가 고르게 배분되어 있는가?'와 같은 질문에 답할 수 있습니다. 중요한 이유 사용자별 업무 참여를 추적하여 업무량과 성과를 비교하고 리소스 관련 병목을 파악할 수 있습니다. 확보 방법 ClaimCenter의 Claim 또는 Exposure 엔터티에서 확인할 수 있으며, 보통 User 객체와 연결됩니다(예: Claim.Assignee). 예시 j.doem.smiths.jones | |||
| 보험금 청구 상태 ClaimStatus | 이벤트 발생 시점의 보험금 청구 전체 상태입니다(예: 접수, 종결, 지급 거절). | ||
| 설명 이 속성은 보험금 청구의 전반적인 상태를 나타냅니다. 주요 상태에는 '접수', '종결', '지급 거절', '재개'가 있습니다. 최종 상태는 청구 처리 결과를 보여주는 중요한 지표입니다. 보험금 청구 상태의 변화를 추적하면 주요 프로세스 단계와 결과를 정의할 수 있습니다. 청구 건의 최종 처리 결과를 확인하고, 지급 거절률을 계산하며, 종결 후 재개되는 빈도를 분석할 수 있습니다. 청구 재개가 잦으면 프로세스 문제나 고객 불만을 나타낼 수 있습니다. 중요한 이유 청구 처리 결과를 나타내며, 지급 거절률과 종결 양상, 청구 재개 빈도를 분석하는 데 필요합니다. 확보 방법 Claim 엔터티의 기본 필드이며, 일반적으로 'State' 또는 'Status'라는 이름으로 저장됩니다. 예시 접수종결지급 거절재개 | |||
| 보험금 청구 유형 ClaimType | 자동차, 재산, 배상 책임 등 보험금 청구의 분류입니다. | ||
| 설명 보험금 청구 유형은 보험 종목이나 손실의 성격에 따라 청구 건을 분류하는 기본 기준입니다. 유형에 따라 프로세스와 복잡도가 다르고 적용되는 규정도 달라질 수 있습니다. 의미 있는 분석을 위해서는 보험금 청구 유형별로 프로세스를 나누어 살펴봐야 합니다. 보험 종목별 성과를 비교하고 유형별 병목을 찾아내며, 각 청구 유형의 특성에 맞춰 프로세스 개선 방안을 마련할 수 있습니다. 중요한 이유 청구 건을 유형별로 나눠 분석할 수 있습니다. 예를 들어 자동차와 재산 보험금 청구는 프로세스와 성과 목표가 서로 다를 수 있습니다. 확보 방법 ClaimCenter의 Policy 또는 Claim 엔터티에서 가져오며, 보통 보험 종목(LOB) 코드에 따라 구분합니다. 예시 개인 자동차 보험기업 재산 보험일반 배상 책임 보험산재 보상 보험 | |||
| 손실 원인 LossCause | 손실을 일으킨 구체적인 원인입니다(예: 충돌, 화재, 침수). | ||
| 설명 이 속성은 보험금 청구가 접수된 이유를 구체적으로 보여줍니다. 손실 원인에 따라 필요한 조사 단계와 전문가 유형, 청구 처리의 전반적인 복잡도가 달라질 수 있습니다. 손실 원인별로 프로세스를 분석하면 숨겨진 패턴을 찾을 수 있습니다. 예를 들어 침수 관련 청구는 도난 관련 청구보다 재작업이 잦거나 전문가의 참여가 더 많이 필요할 수 있습니다. 이러한 분석 결과를 바탕으로 유형별 처리 절차를 마련해 효율성을 높일 수 있습니다. 중요한 이유 청구의 성격을 파악하고 손실 원인에 따라 프로세스 흐름과 소요 시간이 어떻게 달라지는지 분석할 수 있습니다. 확보 방법 Claim 엔터티의 표준 필드이며, 일반적으로 'LossCause'라는 이름으로 저장됩니다. 예시 충돌화재침수도난 | |||
| SLA 상태 SLAState | 보험금 청구가 처리 목표일까지 종결되었는지 나타냅니다. | ||
| 설명 이 계산 속성은 종결된 청구 건별 SLA 준수 상태를 범주로 표시합니다. '청구 종결' 활동의 타임스탬프를 '처리 목표일'과 비교해 산출합니다. 이 속성은 분석 결과를 '기한 내' 또는 '기한 초과'와 같은 명확한 범주로 나누어 '보험금 청구 처리 목표 준수' 대시보드에 활용할 수 있습니다. 데이터를 쉽게 필터링하고 집계하여 전체 SLA 준수율을 계산하고 지연 원인을 한 단계 아래로 내려가 살펴볼 수 있습니다. 중요한 이유 SLA 준수 결과를 명확한 범주로 표시하여 기한 내 처리 성과를 쉽게 필터링하고 집계해 분석할 수 있습니다. 확보 방법 계산 필드: IF (ActualCloseDate <= ResolutionTargetDate, '기한 내', '기한 초과'). 예시 기한 내기한 초과 | |||
| 관할 주 JurisdictionState | 청구 건에 적용되는 주 또는 관할 지역으로, 규제 요건을 결정합니다. | ||
| 설명 이 속성은 청구 처리에 적용되는 법적 관할 지역(예: 미국의 주)을 지정합니다. 보험 규정은 관할 지역마다 크게 다를 수 있으며, 이에 따라 필요한 프로세스 단계와 고객 안내 기한, 문서 요건도 달라집니다. 규정 준수 모니터링에 중요한 속성입니다. 관할 지역별 프로세스를 분석하면 주별 규제 요건을 충족하는지 확인할 수 있습니다. 또한 운영 비효율이 아니라 법적 제약으로 인해 처리 주기나 프로세스 경로가 달라지는 경우를 설명하는 데도 도움이 됩니다. 중요한 이유 관할 지역마다 보험금 청구 프로세스에 영향을 미치는 규정이 다르므로 규정 준수 분석에 필요합니다. 확보 방법 Claim 엔터티의 표준 필드이며, 일반적으로 'JurisdictionState'라는 이름으로 저장됩니다. 예시 CANYTXFL | |||
| 보험 상품 유형 PolicyType | 보험금 청구가 접수된 보험 상품의 구체적인 유형입니다. | ||
| 설명 보험 상품 유형은 보험금 청구 유형보다 세분화된 분류로, '주택 소유자 보험', '기업용 자동차 보험', '사이버 배상 책임 보험'과 같은 구체적인 보험 상품을 나타냅니다. 이 수준으로 구분하면 상품별 프로세스 차이를 확인할 수 있습니다. 보험 상품 유형별로 프로세스를 분석하면 상품별 비효율을 찾아낼 수 있습니다. 예를 들어 새로 출시한 보험 상품의 청구는 프로세스가 충분히 정착되지 않아 지연될 수 있습니다. 이러한 분석 결과는 상품 설계와 프로세스 표준화에 활용할 수 있습니다. 중요한 이유 특정 보험 상품별로 프로세스를 분석하여 보험 상품의 세부 조건에 따른 처리 방식의 차이를 파악할 수 있습니다. 확보 방법 Claim과 연결된 Policy 엔터티에서 확인할 수 있습니다. 예시 주택 종합 보험기업용 자동차 배상 책임 보험내륙 해상 보험 | |||
| 부서 Department | 보험금 청구 활동을 담당하는 사업 부문 또는 부서입니다. | ||
| 설명 이 속성은 담당 손해사정인이 속한 부서나 팀을 나타냅니다. 예를 들어 '자동차 보험금 청구', '재산 보험금 청구', '특별 조사팀' 등이 있습니다. 프로세스를 조직 관점에서 파악하는 데 도움이 됩니다. 부서별 분석은 조직 차원에서 프로세스 성과를 이해하는 데 중요합니다. 부서 간 업무 인계 지연을 찾고, 팀별 효율성을 비교하며, 보험금 청구 조직 전반에 리소스를 더 효과적으로 배분할 수 있습니다. 중요한 이유 조직 내 여러 팀의 성과를 분석하고 부서 간 업무 인계 문제를 파악할 수 있도록 조직 정보를 제공합니다. 확보 방법 일반적으로 ClaimCenter에 등록된 담당 사용자 또는 그룹의 프로필에 연결된 정보입니다. 예시 자동차 보험금 청구 부문재산 보험금 청구팀특별 조사팀(SIU) | |||
| 소스 시스템 SourceSystem | 데이터를 추출한 시스템입니다. | ||
| 설명 이 속성은 이벤트 데이터의 출처를 나타냅니다. 현대적인 기업 환경에서는 Guidewire와 같은 핵심 시스템뿐 아니라 문서 관리 시스템이나 고객 포털 등 여러 시스템에서 보험금 청구 관련 이벤트가 발생할 수 있습니다. 소스 시스템을 지정하면 데이터 거버넌스를 강화하고 데이터 불일치 문제를 해결하며 프로세스에 사용되는 시스템을 파악할 수 있습니다. 핵심 프로세스 단계와 주변 시스템의 지원 활동을 구분하는 데도 도움이 됩니다. 중요한 이유 데이터의 출처를 식별합니다. 데이터 거버넌스와 여러 시스템이 연동된 분석에 필요한 정보입니다. 확보 방법 일반적으로 데이터 추출, 변환, 적재(ETL) 과정에서 추가하는 고정값입니다. 예시 Guidewire ClaimCenter v10Customer Portal APIDocumentum | |||
| 손실 발생일 LossDate | 보험금 청구의 원인이 된 사고나 손실이 발생한 날짜입니다. | ||
| 설명 손실 발생일은 보험금 청구의 원인이 된 실제 사건(예: 자동차 사고, 재산 피해)이 발생한 날짜입니다. 청구를 신고하거나 접수한 날짜와는 다릅니다. 손실 발생일부터 '청구 접수' 활동까지 걸린 시간은 신고 지연 기간이라고 하며, 중요한 KPI입니다. 이를 분석하면 고객 행동과 최초 사고 접수 채널의 효과를 파악할 수 있습니다. 중요한 이유 청구가 발생한 배경을 파악하고 사고 발생부터 청구 접수까지의 신고 지연 기간을 분석할 수 있습니다. 확보 방법 Claim 엔터티의 기본 날짜 필드이며, 보통 'LossDate'라는 이름으로 저장됩니다. 예시 2023-05-102023-04-202023-05-28 | |||
| 자동화 여부 IsAutomated | 활동을 시스템이 자동으로 수행했는지, 사용자가 직접 수행했는지 나타내는 표시값입니다. | ||
| 설명 이 불리언 속성은 시스템이 실행한 활동(예: 지급 준비금 자동 생성, 시스템이 생성한 안내문)과 손해사정인이 직접 수행한 활동을 구분합니다. 이 속성을 분석하면 보험금 청구 프로세스의 자동화 수준을 파악할 수 있습니다. 수작업이 집중되는 지점을 찾고, 자동 처리 추진의 효과를 측정하며, 현재 사람이 수행하는 반복적이고 규칙 기반인 작업을 찾아 자동화 기회를 발굴할 수 있습니다. 중요한 이유 시스템이 수행한 활동과 사람이 수행한 활동을 구분합니다. 자동화 분석과 수작업 병목 파악에 필요한 정보입니다. 확보 방법 별도로 산출해야 하는 경우가 많습니다. 예를 들어 일반적인 'system' 사용자로 기록된 이벤트를 자동화된 활동으로 표시할 수 있습니다. 예시 truefalse | |||
| 재작업 여부 IsRework | 활동이 이전 프로세스 단계로 돌아가는 재작업 루프에 해당하는지 나타내는 표시값입니다. | ||
| 설명 이 계산 속성은 재작업 루프에 포함된 활동을 표시합니다. 예를 들어 프로세스가 '조사 완료'에서 '조사 시작'으로 돌아가면, 두 번째 '조사 시작' 활동을 재작업으로 표시합니다. 재작업을 파악하는 것은 프로세스 비효율과 품질 문제를 찾는 데 중요합니다. 재작업 및 지급 거절 빈도 대시보드는 이 지표를 사용해 청구 건이 이상적인 표준 경로에서 벗어나는 빈도를 측정합니다. 재작업 원인을 분석하면 프로세스 품질과 처리 속도를 개선할 수 있습니다. 중요한 이유 재작업 루프에 포함된 활동을 명확히 표시하여 프로세스 비효율과 품질 문제를 파악할 수 있습니다. 확보 방법 각 케이스의 활동 순서를 분석하여 process mining 도구에서 계산합니다. 예시 truefalse | |||
| 정보 재요청 RepeatedInfoRequestFlag | 같은 청구 건에서 '추가 정보 요청'이 두 번 이상 발생했는지 나타내는 표시값입니다. | ||
| 설명 하나의 청구 건에서 '추가 정보 요청' 활동이 두 번 이상 발생하면 이 불리언 표시값을 true로 설정합니다. 이는 초기 정보 수집 단계의 비효율을 나타내는 경우가 많습니다. 이 속성은 '정보 재요청률' KPI를 산출하는 데 직접 활용됩니다. 초기 사실 확인이 불완전해 발생하는 문제를 측정할 수 있으며, 이로 인해 상당한 지연과 고객 불만이 생길 수 있습니다. 해당 표시값이 있는 청구 건을 분석하면 손해사정인이 필요한 정보를 한 번에 모두 요청하도록 체크리스트와 절차를 개선할 수 있습니다. 중요한 이유 정보를 처음부터 충분히 수집하지 못해 프로세스 지연과 재작업이 발생하는 비효율을 파악할 수 있습니다. 확보 방법 케이스별 '추가 정보 요청' 활동 횟수를 세어 process mining 도구에서 계산합니다. 예시 truefalse | |||
| 종료 시간 EndTime | 활동이 완료된 시점을 나타내는 타임스탬프입니다. | ||
| 설명 종료 시간은 '조사'나 '문서 검토'처럼 소요 시간을 측정할 수 있는 활동이 완료된 시점을 나타냅니다. process mining에서 다루는 활동 중에는 시작 시점만으로 충분한 경우도 많지만, 시작과 종료가 구분되는 활동은 두 타임스탬프를 모두 기록하는 편이 정확합니다. 이 속성을 사용하면 대기 시간과 구분하여 활동의 실제 처리 시간을 계산할 수 있습니다. 단계 사이의 지연만 보는 대신, 어떤 작업에 시간이 오래 걸리는지 파악할 수 있습니다. 중요한 이유 활동을 완료하는 데 걸린 시간을 정확히 측정하고 처리 시간과 대기 시간을 구분할 수 있습니다. 확보 방법 활동을 논리적으로 마무리하는 후속 이벤트를 찾아 종료 시점을 산출해야 할 수 있습니다. 예를 들어 상태가 '진행 중'에서 '완료'로 변경되는 경우입니다. 예시 2023-05-15T17:00:00Z2023-05-16T15:00:00Z2023-06-02T10:00:00Z | |||
| 지급 금액 PaymentAmount | 지급 활동에서 실제로 지급된 금액입니다. | ||
| 설명 이 속성은 보험금 청구 건에 대해 각각 지급된 금액을 기록합니다. 하나의 청구 건에서 처리 기간 동안 여러 차례 지급이 발생할 수 있습니다. process mining을 활용한 재무 분석에 필요한 정보입니다. 청구 건별 총 지급액을 추적하고, 금액에 따른 지급 승인 시간을 분석하며, 프로세스 비효율과 재무 결과의 관계를 살펴볼 수 있습니다. 예를 들어 처리 주기가 긴 청구 건은 총 지급액도 높을 수 있습니다. 중요한 이유 청구 건에서 발생한 금융 거래를 추적하여 지급액과 프로세스 활동 간의 관계를 분석할 수 있습니다. 확보 방법 청구 건과 연결된 지급 관련 엔터티에서 확인할 수 있으며, 보통 거래 또는 수표 테이블에 저장됩니다. 예시 4500.00125000.00500.00 | |||
| 처리 목표일 ResolutionTargetDate | 내부 기준이나 규제상 SLA에 따라 보험금 청구를 처리할 것으로 예상되는 날짜입니다. | ||
| 설명 처리 목표일은 청구 건을 종결해야 하는 기한입니다. 관할 지역, 청구 유형, 보험 약관 등의 요인에 따라 정해지는 경우가 많습니다. 성과와 규정 준수를 측정하는 기준으로 사용됩니다. SLA 준수 대시보드와 KPI를 구성하는 데 필요한 속성입니다. 실제 '청구 종결' 날짜를 목표일과 비교하면 기한을 넘긴 청구 건을 자동으로 표시하고, 기한 내 처리율을 측정하며, 목표를 달성하지 못하는 청구 유형이나 부서를 파악할 수 있습니다. 중요한 이유 서비스 수준 계약(SLA) 준수 여부를 측정하고 기한을 넘길 위험이 있는 청구 건을 파악하는 기준입니다. 확보 방법 ClaimCenter에서 설정한 사용자 정의 필드이거나 업무 규칙에 따라 산출한 값일 수 있으며, 특정 청구 지표와 연관될 수 있습니다. 예시 2023-06-142023-07-202023-08-28 | |||
| 청구 금액 ClaimedAmount | 보험 계약자가 처음 청구한 총 금액입니다. | ||
| 설명 이 속성은 청구인이 신고한 손실 금액을 나타냅니다. 일반적으로 초기 추정액이며, 청구 조사와 지급 준비금 설정 과정에서 변경될 수 있습니다. 청구 금액을 분석하면 재정적 영향에 따라 청구 건을 구분할 수 있습니다. 고액 청구는 소액 청구보다 더 엄격하고 복잡한 프로세스를 거치는 경우가 많습니다. 금액대별 프로세스를 비교하면 소액 청구의 처리 절차를 간소화하거나 고액 청구에 더 엄격한 통제를 적용할 기회를 찾을 수 있습니다. 중요한 이유 재정적 가치에 따라 청구 건을 구분할 수 있습니다. 고액 청구는 더 복잡하고 다른 프로세스를 따를 수 있습니다. 확보 방법 단일 필드로 저장되지 않을 수 있으며, Exposure에 기록된 초기 손실 추정액을 바탕으로 산출할 수 있습니다. 예시 5000.00150000.00750.50 | |||
| 최종 데이터 업데이트 LastDataUpdate | 소스 시스템에서 데이터를 마지막으로 새로 고치거나 추출한 시점을 나타내는 타임스탬프입니다. | ||
| 설명 이 속성은 소스 시스템에서 데이터를 가장 최근에 가져온 시점을 나타냅니다. 분석에 사용된 데이터가 얼마나 최신인지 파악하는 데 필요한 메타데이터입니다. 사용자가 데이터의 최신성을 확인할 수 있도록 대시보드와 분석 화면에 이 정보를 눈에 띄게 표시해야 합니다. 이를 통해 분석 결과가 현재 운영 상태를 반영하는지, 아니면 오래된 데이터를 기반으로 하는지 판단할 수 있습니다. 중요한 이유 데이터의 최신성을 나타내어 사용자가 프로세스 분석이 얼마나 최근 상태를 반영하는지 알 수 있습니다. 확보 방법 ETL 과정에서 생성 및 저장되며, 데이터 적재 시점을 나타냅니다. 예시 2024-07-28T04:00:00Z2024-07-29T04:00:00Z | |||
보험금 청구 처리 활동
| 활동 | 설명 | ||
|---|---|---|---|
| 손해 항목 생성 | 이 활동은 청구 건에 포함된 구체적인 잠재 부채 또는 손해 유형(예: 차량 손상, 부상)을 나타내는 손해 항목이 생성된 시점을 의미합니다. Guidewire에서 명시적으로 기록되는 이벤트입니다. | ||
| 중요한 이유 손해 항목은 청구 건을 세분화하고 분석하는 데 기본이 됩니다. 생성 시점을 추적하면 청구 복잡도와 손해 유형에 따른 프로세스 차이를 파악할 수 있습니다. 확보 방법 cc_exposure 테이블에 새 레코드가 생성될 때의 CreateTime에서 수집합니다. 각 레코드는 하나의 Claim ID와 연결됩니다. 기록 Exposure 엔터티 테이블에서 새 레코드가 생성된 타임스탬프를 확인합니다. 이벤트 유형 explicit | |||
| 지급 승인 | 합의금 지급이 공식적으로 승인된 것을 나타냅니다. 권한이 있는 사용자가 거래를 승인할 때 명시적으로 기록되는 중요한 감사 이벤트입니다. | ||
| 중요한 이유 이 이정표를 거쳐야 최종 지급 단계로 진행할 수 있습니다. 활동 전후의 시간을 분석하면 승인 워크플로나 관리자의 가용성으로 인한 지연을 구분할 수 있습니다. 확보 방법 cc_check 또는 cc_transaction 엔터티와 관련해 'Pending Approval'에서 'Approved'로 상태가 바뀐 기록이 cc_history 테이블에 명시적으로 남는 경우가 많습니다. 기록 특정 지급 거래의 상태가 'Approved'로 변경된 이벤트를 추적합니다. 이벤트 유형 explicit | |||
| 지급 실행 | 지급 절차의 마지막 단계로, 지급이 공식적으로 실행되어 재무 시스템으로 전송된 시점을 나타냅니다. 명시적으로 기록되는 재무 거래입니다. | ||
| 중요한 이유 이 활동은 지급 실행 절차의 효율을 측정하는 데 중요합니다. 승인 지연과 실제 자금 지급 지연을 구분할 수 있습니다. 확보 방법 cc_check 또는 cc_transaction 엔터티의 IssueDate, 또는 상태가 'Issued'나 'Submitted'로 변경된 시점에서 수집합니다. 타임스탬프가 포함된 이벤트로 명시적으로 기록되는 경우가 많습니다. 기록 지급 레코드의 IssueDate 또는 상태가 'Issued'로 변경된 타임스탬프를 확인합니다. 이벤트 유형 explicit | |||
| 청구 거절 | 청구를 최종 거절해 프로세스를 종료하는 것을 나타냅니다. 청구 상태가 'Denied' 사유로 종료 상태로 변경된 시점에서 파악합니다. | ||
| 중요한 이유 중요한 결과 이벤트입니다. 거절 빈도와 사유, 거절로 이어진 처리 경로를 분석하면 청구 접수와 조사, 약관 해석의 문제를 찾을 수 있습니다. 확보 방법 cc_claim 테이블의 State 필드가 'Closed'로 변경되고 CloseReason 필드가 'Denied' 또는 유사한 값인 경우 파악합니다. 이벤트 타임스탬프는 CloseDate입니다. 기록 거절을 나타내는 사유 코드와 함께 청구 상태가 'Closed'로 변경된 사례를 필터링합니다. 이벤트 유형 inferred | |||
| 청구 건 생성 | 이 활동은 최초 손해 통지(FNOL)와 Guidewire ClaimCenter에 새 청구 기록이 공식적으로 생성된 시점을 나타냅니다. 새 Claim 엔터티가 데이터베이스에 처음 저장될 때 명시적으로 기록됩니다. | ||
| 중요한 이유 주요 시작 이벤트인 이 활동은 청구 처리의 전체 소요 시간을 측정하는 데 필요합니다. 이후 모든 성과 및 기간 KPI의 기준점이 됩니다. 확보 방법 cc_claim 테이블의 CreateTime에서 명시적으로 수집되는 이벤트입니다. 고유한 Claim ID가 부여된 새 레코드가 생성될 때 이벤트가 발생합니다. 기록 기본 Claim 엔터티 테이블에서 새 레코드가 생성된 타임스탬프를 확인합니다. 이벤트 유형 explicit | |||
| 청구 건 종결 | 모든 활동과 지급이 완료된 후 청구 건이 성공적으로 종결된 것을 나타냅니다. 주요 성공 종료 이벤트로, 청구의 기본 상태 변경을 통해 파악합니다. | ||
| 중요한 이유 주요 종료 이벤트인 이 활동은 전체 처리 기간을 계산하고 SLA 준수율을 측정하는 데 필요합니다. 청구 처리 주기가 완료되었음을 나타냅니다. 확보 방법 cc_claim 테이블의 State 필드가 'Closed'로 변경된 시점에서 파악합니다. 이벤트 타임스탬프는 청구 레코드의 CloseDate입니다. 기록 청구의 기본 상태 필드가 'Closed'로 변경된 시점을 확인합니다. 이벤트 유형 inferred | |||
| 최초 지급준비금 설정 | 손해 항목에 대한 첫 번째 지급준비금 거래가 생성된 시점을 나타내며, 청구 건의 예상 비용을 산정합니다. 중요한 재무 이벤트로 명시적으로 기록됩니다. | ||
| 중요한 이유 이 이정표는 재무 분석과 잠재 부채를 얼마나 빠르게 평가하는지 파악하는 데 중요합니다. 지연되면 재무 계획과 보고에 영향을 줄 수 있습니다. 확보 방법 청구 건의 손해 항목과 연결된 첫 cc_reserveline 레코드가 생성될 때 이벤트를 수집합니다. 거래의 CreateTime이 이벤트 타임스탬프입니다. 기록 해당 청구 건의 손해 항목에 속한 모든 지급준비금 항목 중 가장 이른 생성 타임스탬프를 찾습니다. 이벤트 유형 explicit | |||
| 조사 시작 | 청구 또는 손해 항목의 조사 단계가 공식적으로 시작된 시점을 나타냅니다. Guidewire에서 첫 조사 관련 '활동'(작업)이 생성된 시점을 기준으로 판단하는 경우가 많습니다. | ||
| 중요한 이유 이 활동은 중요하고 대개 오래 걸리는 단계의 시작을 나타냅니다. 조사 시작까지 걸린 시간과 조사 자체의 소요 시간을 분석하면 주요 병목을 찾을 수 있습니다. 확보 방법 조사와 관련된 ActivityPattern(예: '초기 조사', '목격자 연락')을 가진 cc_activity 레코드의 CreateTime에서 파악합니다. 기록 조사와 관련된 패턴이나 제목을 가진 작업이 처음 생성된 시점을 확인합니다. 이벤트 유형 inferred | |||
| 책임 여부 결정 | 손해 항목에 대한 책임 또는 과실 여부가 결정된 시점을 나타냅니다. 일반적으로 Exposure 엔터티의 상태 변경을 통해 파악합니다. | ||
| 중요한 이유 이 중요한 의사결정 이정표를 지나야 합의와 지급 단계로 진행할 수 있습니다. 결정까지 걸린 시간을 분석하면 조사 및 평가 단계의 병목을 찾을 수 있습니다. 확보 방법 cc_history 테이블에서 cc_exposure 엔터티의 State 또는 사용자 지정 책임 상태 필드 변경을 추적해 파악합니다. 이력 레코드의 타임스탬프가 이벤트 발생 시점을 나타냅니다. 기록 감사 로그나 이력 테이블에서 손해 항목의 상태 또는 책임 상태 변경을 확인합니다. 이벤트 유형 inferred | |||
| 청구 건 배정 | 청구 건을 특정 사용자(손해사정사)나 처리 그룹에 배정하는 것을 나타냅니다. 일반적으로 Claim 엔터티의 배정 필드 변경을 추적해 파악합니다. | ||
| 중요한 이유 배정 내역을 추적하면 손해사정사별 업무량을 분석하고 배정 과정의 병목을 찾아내며 담당자가 배정된 후 첫 조치를 취하기까지 걸리는 시간을 측정할 수 있습니다. 확보 방법 cc_history 테이블에서 특정 Claim ID와 연결된 AssignedUser 또는 AssignedGroup 필드의 변경을 추적해 파악합니다. 변경 타임스탬프가 이벤트 발생 시점을 나타냅니다. 기록 감사 로그나 이력 테이블에서 청구 배정 필드의 변경을 확인합니다. 이벤트 유형 inferred | |||
| 청구 건 재개 | 'Closed' 상태의 청구 건을 추가 처리하기 위해 'Open' 상태로 되돌리는 것을 나타냅니다. 특정 상태 변경 순서를 통해 파악합니다. | ||
| 중요한 이유 이 활동은 재작업이 발생했음을 나타냅니다. 재개된 청구 건이 많으면 최초 합의의 문제나 누락된 손해, 기타 프로세스 실패가 있음을 의미할 수 있으며, 비용과 비효율이 늘어납니다. 확보 방법 cc_history 테이블에서 cc_claim 엔터티의 State 필드가 'Closed'에서 'Open' 또는 다른 진행 중 상태로 변경된 기록을 찾아 파악합니다. 기록 청구의 기본 상태 필드가 종료 상태에서 진행 중 상태로 변경되는지 추적합니다. 이벤트 유형 inferred | |||
| 추가 정보 수신 | 추가 정보 요청이 완료된 시점을 나타냅니다. 해당 정보 요청 '활동'(작업)이 '완료'로 표시된 시점에 기록됩니다. | ||
| 중요한 이유 이 이벤트는 '추가 정보 수집 소요 시간' KPI의 종료점입니다. 요청부터 수신까지 시간이 오래 걸리면 청구 처리가 지연되는 경우가 많습니다. 확보 방법 정보 요청과 관련된 ActivityPattern을 가진 cc_activity 레코드의 CloseTime에서 수집합니다. 활동 상태는 'Completed'여야 합니다. 기록 외부 정보를 요청하는 작업이 완료된 타임스탬프를 확인합니다. 이벤트 유형 explicit | |||
| 추가 정보 요청 | 청구인 또는 제3자에게 추가 정보나 문서를 요청한 시점을 나타냅니다. 일반적으로 ClaimCenter에서 명시적으로 생성된 '활동'(작업)으로 기록됩니다. | ||
| 중요한 이유 이 활동은 '추가 정보 수집 소요 시간' KPI를 측정하는 시작점입니다. 자주 발생하면 FNOL 절차가 불완전하거나 정보 수집이 비효율적일 수 있습니다. 확보 방법 외부 당사자에게 서류나 정보를 요청하는 ActivityPattern을 가진 cc_activity 레코드의 CreateTime에서 수집합니다. 기록 외부 정보를 요청하는 작업이 생성된 시점을 확인합니다. 이벤트 유형 explicit | |||
| 합의 금액 산정 | 합의 금액은 산정했지만 아직 지급 승인을 받지 않은 시점을 나타냅니다. 'Pending Approval' 상태의 지급 건이 생성된 시점으로 파악할 수 있습니다. | ||
| 중요한 이유 평가 단계에서 지급 단계로 넘어가는 시점을 나타냅니다. '지급 승인 소요 시간' KPI의 시작점으로, 승인 절차의 지연을 확인할 수 있습니다. 확보 방법 초기 상태가 'Pending Approval' 또는 'Approved' 이전의 유사 상태인 cc_check 또는 cc_transaction 레코드의 CreateTime에서 파악합니다. 기록 승인 전 상태로 지급 또는 거래 레코드가 생성된 시점을 확인합니다. 이벤트 유형 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 작업이 제때 정상적으로 실행되는지에 달려 있습니다. 데이터 최신성을 확인하려면 마지막으로 성공한 실행 시각을 확인합니다.
- 날짜 범위 필터링: 제공된 쿼리에는 '[StartDate]' 및 '[EndDate]' 자리표시자가 포함된 WHERE 절이 있습니다. 성능을 고려해 우선 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개, 즉 Claim Created, Claim Assigned, Exposure Created, Initial Reserve Set, Investigation Started, Additional Info Requested, Additional Info Received, Liability Decision Made, Settlement Calculated, Payment Approved, Payment Issued, Claim Denied, Claim Closed, Claim Reopened에 해당하는 행을 명시적으로 생성합니다.
- 쿼리를 실행하고 결과 스키마를 확인합니다. 출력에는 ClaimID, ActivityName, EventTime, AssignedAdjuster, ClaimType, ClaimStatus, LossCause가 포함되어야 합니다. ProcessMind에는 ClaimID, ActivityName, EventTime이 필수입니다. 이벤트별로 한 행을 유지하고 청구 건별로 이벤트를 집계하지 마세요.
- 내보내기 전에 타임스탬프, 상태 전환, 담당자 변경, 중복 처리, 활동 건수를 검증합니다. 이벤트 시각의 시간대가 일관적인지 확인합니다. 같은 시각의 이벤트라도 서로 다른 업무 활동이면 별도 행으로 유지합니다.
- 결과를 UTF-8 CSV 또는 ProcessMind에서 지원하는 다른 표 형식으로 내보냅니다. ClaimID는 케이스 식별자, ActivityName은 활동, EventTime은 이벤트 시각으로 매핑합니다. 권장 속성은 추가 이벤트 속성으로 유지하고, 이 추출에 포함되지 않은 활동을 임의로 추가하지 않은 상태로 파일을 ProcessMind에 업로드합니다.
구성
- 연결 및 권한: 승인된 Snowflake 계정, 역할, 웨어하우스, 네트워크 경로를 통해 Guidewire가 제공한 Snowflake 데이터 공유를 사용합니다. 데이터를 사용하는 쪽에서 CDA는 읽기 전용입니다. 필요한 접근 권한은 테넌트 설정에 따라 다르며, 공유 데이터베이스와 특정 스키마 또는 뷰를 조회하는 권한이 필요할 수 있습니다.
- 원본 객체 설정: 대괄호로 표시된 모든 원본 참조를 CDA 공유에서 확인한 객체로 바꿉니다. 릴리스와 테넌트에 따라 CDA 구조가 달라지므로 쿼리에서 보편적인 ClaimCenter 테이블 또는 열 이름을 전제하지 않습니다.
- 날짜 범위: 검증과 운영 분석을 위해 우선 3~6개월을 사용합니다. 웨어하우스 용량, 이벤트 이력 보존 기간, 허용 가능한 쿼리 시간을 확인한 뒤에만 범위를 넓힙니다. 이후 활동이 누락되지 않도록 청구 생성일만이 아니라 관련 이벤트 시각을 기준으로 원본 레코드를 필터링합니다.
- 필수 출력: 모든 이벤트 행에 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]로 추출 기간을 지정합니다. 상태 변경, 작업 완료, 금융 거래가 기본 청구 생성 기간 이후에 기록될 수 있다면 요청 시작일보다 1~2일 앞선 기간을 겹쳐 추출합니다.
- 전체 SQL 문을 읽기 전용 권한으로 실행합니다. 각 활동은 명시적인 이벤트 행으로 출력됩니다. 데이터를 불러온 뒤 ProcessMind가 이벤트를 추론하는 방식은 사용하지 않습니다. 필드 변경에서 추론하는 이벤트는 관련 이력 또는 감사 기록을 바탕으로 SQL 문 안에서 생성됩니다.
- 각 활동의 원본 매핑을 검증합니다. 청구 생성은 처음 저장된 Claim 레코드, 배정은 배정 변경, 담보 생성은 담보 생성 레코드, 초기 준비금은 담보별 최초 준비금 거래, 조사 및 정보 요청은 활동 레코드, 책임 판단은 설정된 담보 상태 전환, 합의는 승인 대기 지급 상태, 지급 승인 및 지급 실행은 각각 해당 금융 감사 상태를 사용하는지 확인합니다.
- 출력을 필수 이벤트 로그 구조로 정규화합니다. 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의 논리 엔터티 이름이 실제 데이터베이스 테이블 이름과 같다고 가정하지 마세요.
- 날짜 범위: 우선 3~6개월의 데이터를 사용합니다. [Start date parameter]와 [End date parameter]를 지정하고, 청구 생성 이후 이벤트가 기록되거나 재개된 청구가 여러 보고 기간에 걸치는 경우 겹치는 기간을 포함합니다.
- 필터: [Company Code filter], [Document Type filter], 관할 지역, 업무 분야 또는 조직별 필터는 실제 열과 업무상 의미를 확인한 뒤에만 적용합니다. 지급이 없거나 담보가 없는 청구도 전체 처리 과정을 분석하는 데 필요하므로 제외하지 마세요.
- 활동 이름: ProcessMind에서 일관된 이벤트 레이블을 사용할 수 있도록 쿼리에 정의된 14개 ActivityName 값을 그대로 유지합니다.
- 이벤트 의미: 추론으로 표시된 활동은 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%의 무인 처리를 목표로 하세요.
신용카드 없이 몇 분 만에 설정할 수 있습니다.