Omniscope Custom Blocks › Analytics/Case-Bottlenecks

Case Duration and Bottlenecks

From an event log: case durations and rework, the slowest and costliest handovers between activities, and activity statistics.

Analytics › Process Python visokio-agents

Open the demo in Omniscope Download demo.ioz Sample data: claims-events.csv Source on GitHub

Items tagged visokio-agents are community examples built by Visokio's agents, to extend Omniscope's core blocks and views with popular, specialist and more unusual use cases, and to show what anyone, people or agents, can build on Omniscope. They are tested by automated tests and were run on a real Omniscope server. They were not reviewed by Omniscope's core team, so they are not on a par with the core blocks and views, which have years of manual, functional and unit tests behind them. About

Omniscope custom block · Analytics

From an event log to cycle times, rework and the handovers where work waits longest, ranked by total delay.

Python · pandas, numpy · nothing extra to install

The problem it solves

Operational systems log every step of a claim, order or application, but the questions are about flow: how long do cases take, where do they wait, and how often does work loop back. Answering them means ordering events per case, pairing each step with the next and summarising the gaps.

This block does that from a plain event log in any order: per-case durations and rework, per-handover waiting times ranked by total delay, and activity statistics.

How it works

What goes in

Claims events

5,923 synthetic events for 900 claims, shuffled.

Claim ID Activity Timestamp
CLM-70046 Claim received 2025-09-17 19:00
CLM-70396 Claim received 2025-10-10 01:00
CLM-70621 Approval 2025-09-12 16:10
CLM-70806 Claim received 2025-09-21 10:00
CLM-70227 Triage 2025-10-22 20:45
CLM-70460 Assessment 2025-09-20 16:39

5,923 rows in the sample file.

The options

Option Demo setting What it does
Case field Claim ID Identifies a case, such as a claim, ticket or order number.
Activity field Activity The name of the step recorded in each event.
Timestamp field Timestamp When the event happened; orders the events within each case.
Durations in Hours Unit for durations and waiting times.

What comes out

Handovers, most total waiting first

From Activity To Activity Handovers Cases Median Hours Average Hours 90th Percentile Hours Total Hours Share Of All Waiting Rank By Total Rank By Median Repeat Of Same Activity
Documents requested Documents received 670 571 59.06 75.81 151.09 50,789.80 0.47 1 1 No
Triage Documents requested 500 500 23.16 28.8 57.61 14,400.83 0.13 2 2 No
Documents received Assessment 670 571 15.8 20.62 44.34 13,813.93 0.13 3 4 No
Triage Assessment 400 400 22.59 29.08 58.86 11,631.28 0.11 4 3 No
Assessment Approval 813 813 7.55 10.01 22.09 8,138.97 0.08 5 5 No
Approval Payment 813 813 4.55 5.97 12.41 4,854.80 0.05 6 8 No
Claim received Triage 900 900 1.52 1.88 3.95 1,695.98 0.02 7 9 No
Assessment Documents requested 170 170 6.51 9.12 19.5 1,549.58 0.01 8 7 No

Slowest cases

Claim ID Start End Duration (Hours) Steps Distinct Activities Rework Steps First Activity Last Activity Route Variant Rank Slowest 10%
CLM-70525 2025-10-24 10:00 2025-11-22 11:46 697.77 10 7 3 Claim received Payment Claim received > Triage > Documents requested > Documents received > Assessment > Documents requested > Documents received > Assessment > Approval > Payment 3 Yes
CLM-70251 2025-10-10 08:00 2025-11-03 22:15 590.25 10 7 3 Claim received Payment Claim received > Triage > Documents requested > Documents received > Assessment > Documents requested > Documents received > Assessment > Approval > Payment 3 Yes
CLM-70608 2025-10-26 04:00 2025-11-15 21:00 497 10 7 3 Claim received Payment Claim received > Triage > Documents requested > Documents received > Assessment > Documents requested > Documents received > Assessment > Approval > Payment 3 Yes
CLM-70812 2025-09-26 00:00 2025-10-15 18:50 474.83 10 7 3 Claim received Payment Claim received > Triage > Documents requested > Documents received > Assessment > Documents requested > Documents received > Assessment > Approval > Payment 3 Yes
CLM-70455 2025-09-29 05:00 2025-10-18 20:04 471.07 9 6 3 Claim received Rejected Claim received > Triage > Documents requested > Documents received > Assessment > Documents requested > Documents received > Assessment > Rejected 7 Yes
CLM-70729 2025-10-30 04:00 2025-11-17 20:44 448.73 10 7 3 Claim received Payment Claim received > Triage > Documents requested > Documents received > Assessment > Documents requested > Documents received > Assessment > Approval > Payment 3 Yes
Waiting for documents dominates the claim lifecycle (synthetic data).
Waiting for documents dominates the claim lifecycle (synthetic data).

Waiting for documents dominates the claim lifecycle (synthetic data).

The long tails (90th percentile) show where some cases wait far longer than typical.
The long tails (90th percentile) show where some cases wait far longer than typical.

The long tails (90th percentile) show where some cases wait far longer than typical.

Where it pays off

Insurance and financial services: Claims and applications

Where claims wait, how often documents are chased twice, and which steps drive the slowest 10%.

Order management: Order to cash

Order, pick, pack, ship, invoice and pay: the handovers that delay cash.

Healthcare: Patient pathways

Referral to appointment to treatment waits, by step.

Public sector: Casework

Case stages, rework and waiting times for planning, licensing or benefits processes.

Use cases describe typical scenarios and are illustrative.

Why do this in Omniscope

How it fits into an Omniscope workflow

Event log (workflow system) → Case Duration and Bottlenecks → Path Analysis (routes) → Report

Load the event log on a schedule; Path Analysis shows the common routes, and Business Hours and SLA measures steps in working time.

Show the handovers ranked by total waiting and the slowest cases in a Report.

In one step

Durations, rework and ranked handovers straight from an event log.

Try it

  1. Open the demo project (demo.iox on the demo server, or import demo.ioz from this folder): a synthetic claims event log in no particular order.
  2. The question: where do claims spend their time, and how much does rework cost?
  3. Run the block: cases, handovers and activities.
  4. Look at the handovers: documents requested to documents received accounts for 47% of all waiting.
  5. Look at rework: 170 claims had documents requested twice; their median duration is 186 hours against 82.

Running in Omniscope

Omniscope workflow
Omniscope workflow

The demo project's workflow: the sample data, the block, and a Validate data check on its output.

Language and libraries

Python. It uses pandas and numpy.

pandas and numpy are part of Omniscope's Docker Python image, and the block was run in both host mode and Docker mode on an Omniscope server, with the same results. It needs nothing else installed.

Tested

The demo workflow completed without errors on an Omniscope server (900 records in Cases, 9 in Handovers and 8 in Activities). Automated tests check normal data, empty input, wrong types and large input.

Reference

Fields it reads

NameTypeWhat it does
Case fieldFieldIdentifies a case, such as a claim, ticket or order number.
Activity fieldFieldThe name of the step recorded in each event.
Timestamp fieldFieldWhen the event happened; orders the events within each case.

Options

NameTypeWhat it does
Durations inChoiceUnit for durations and waiting times.
Steps shown in a routeWhole number

Outputs

OutputWhat it holds
CasesPer case: start, end, duration, steps, rework, first and last activity, route, variant rank, slowest 10%.
HandoversPer pair of consecutive activities: count, cases, median / average / 90th percentile / total time, share of waiting, ranks.
ActivitiesPer activity: occurrences, cases, rework, median time to next step, times last step.