LabHub
배우기 러닝패스 코스

Insurance Domain Deep Dive

Finding the Payment-Delay Bottleneck in the Tail

LabHub 에서 이어서 보기

한국어 원문으로 표시합니다.

목표

지급 지연 신고를 받았을 때 통짜 시간이 아니라 구간과 백분위수로 쪼개어 고칠 자리를 지목할 수 있게 되고, 부지급 사유 코드에서 심사 규칙의 결함을 읽어 낼 수 있게 됩니다.

왜 중요한가

지급 지연 대시보드가 목표치 안에 들어와 있는데 민원은 계속 들어오는 상황이 흔합니다. 민원을 넣는 사람은 평균에 있는 사람이 아니기 때문입니다. 평균은 짧은 건이 많아서 낮은 것이지 긴 건이 없어서 낮은 것이 아닙니다.

그리고 지연을 고치려면 어느 구간이 먹었는지까지 가야 합니다. "접수부터 지급까지 20일" 로는 아무도 못 고치고, "조사에서 18일" 이라야 조사 배정 규칙을 손보자는 말이 나옵니다. 접수-배정 구간이 길면 인력 문제이고 결정-지급 구간이 길면 정산 시스템 문제라, 구간을 안 나눈 보고는 엉뚱한 팀에 일을 던지게 만듭니다.

이 실습에서 쓰는 정의를 못박아 둡니다.

백분위수   오름차순 정렬 후 ceil(p × n ÷ 100) 번째 값 (최근접 순위법)
평균       합을 건수로 나눈 몫. 소수점은 버린다
지급기일   접수 후 240시간
지연일수   (접수→지급 시간 − 240) ÷ 24 의 몫. 음수면 0
지연이자   지급액 × 54 × 지연일수 ÷ 365000 의 몫 (연 5.4% 일할, 원 단위 내림)

금액은 처음부터 끝까지 정수 원으로 다룹니다. 실수로 계산하면 대사가 1원씩 어긋나고, 그 1원의 원인을 찾는 데 며칠이 갑니다.

단계

  1. 오른쪽 예시의 생성기를 /root/ins/make_claim.py 로 저장하고 python3 make_claim.py 로 실행하세요. 청구 200건, 단계 이력 965행, 이의 8건이 만들어집니다.
  2. /root/ins/funnel.txt 에 단계별 건수 다섯 줄(stage_received=stage_paid=)과 ledger_decided=, gap= 을 적고, 원장에 안 실린 건을 /root/ins/funnel_gap.csvclaim_no,decided_ts 로 남기세요.
  3. 지급까지 간 청구의 구간별 소요 시간을 /root/ins/latency.csvclaim_no,assign_h,investigate_h,review_h,pay_h,total_h 로 적으세요.
  4. /root/ins/percentile.txtn=, mean_h=, p50_h=, p90_h=, p99_h= 다섯 줄을 적으세요.
  5. total_h 가 p90 이상인 건만 골라 /root/ins/bottleneck.txttail_n=, tail_total_h=, tail_assign_h=, tail_investigate_h=, tail_review_h=, tail_pay_h=, tail_investigate_pct= 일곱 줄을 적으세요.
  6. 부지급 사유 코드별 건수를 /root/ins/denial.csvcode,denied,appealed,overturned 로 적고, /root/ins/denial.txtwrongful_denied=, wrongful_claimed_amount=, wrongful_code= 세 줄을 적으세요.
  7. 지급기일을 넘긴 건의 지연이자를 /root/ins/interest.csvclaim_no,over_days,paid_amount,interest 로 적으세요.
  8. /root/ins/claim_report.md## 확인한 것, ## 지연은 어디서 생기는가, ## 부당 부지급, ## 권고, ## 반출하지 않은 것 다섯 절로 보고서를 쓰세요.

참고

청구 데이터 만들기

오른쪽 예시의 생성기를 /root/ins/make_claim.py 로 저장하고 python3 make_claim.py 로 실행하세요. 청구 200건, 단계 이력 965행, 이의 8건이 만들어집니다.

실습 안내에 있는 생성기를 /root/ins/make_claim.py 로 저장하고 python3 로 실행하세요. 손으로 고치면 뒤 단계의 숫자가 전부 어긋납니다.

단계표와 원장을 각각 세기

/root/ins/funnel.txt 에 단계별 건수 다섯 줄(stage_received=stage_paid=)과 ledger_decided=, gap= 을 적고, 원장에 안 실린 건을 /root/ins/funnel_gap.csvclaim_no,decided_ts 로 남기세요.

같은 '결정 건수' 를 claim_stage 와 claim.decision 두 곳에서 세어 보세요. 두 숫자가 갈라지면 그 차이가 아무도 손대지 않고 있는 건입니다.

소요 시간을 네 구간으로 쪼개기

지급까지 간 청구의 구간별 소요 시간을 /root/ins/latency.csvclaim_no,assign_h,investigate_h,review_h,pay_h,total_h 로 적으세요.

단계 시각이 모두 정시라서 julianday 차이에 24를 곱하고 반올림하면 정확한 정수 시간이 나옵니다. 지급까지 간 청구만 대상입니다.

평균 뒤에 숨은 꼬리 드러내기

/root/ins/percentile.txtn=, mean_h=, p50_h=, p90_h=, p99_h= 다섯 줄을 적으세요.

백분위수는 최근접 순위법으로 잡습니다 — 오름차순으로 정렬한 뒤 ceil(p × n ÷ 100) 번째 값입니다. 평균은 합을 건수로 나눈 몫만 취하세요.

꼬리의 시간이 어느 구간으로 갔는지 지목하기

total_h 가 p90 이상인 건만 골라 /root/ins/bottleneck.txttail_n=, tail_total_h=, tail_assign_h=, tail_investigate_h=, tail_review_h=, tail_pay_h=, tail_investigate_pct= 일곱 줄을 적으세요.

total_h 가 p90 이상인 건만 골라 구간별로 합산하세요. 비중은 조사 구간 합계에 100을 곱하고 전체 합계로 나눈 몫입니다.

부지급 사유와 뒤집힌 건 가려내기

부지급 사유 코드별 건수를 /root/ins/denial.csvcode,denied,appealed,overturned 로 적고, /root/ins/denial.txtwrongful_denied=, wrongful_claimed_amount=, wrongful_code= 세 줄을 적으세요.

코드별 건수만 보면 고르게 퍼져 보입니다. 이의 제기 건수와 뒤집힌 건수를 같은 줄에 붙여 놓으면 한 코드에 몰려 있는 것이 보입니다.

지연이자를 정수 원으로 계산하기

지급기일을 넘긴 건의 지연이자를 /root/ins/interest.csvclaim_no,over_days,paid_amount,interest 로 적으세요.

지급기일은 접수 후 240시간입니다. 지연일수는 (소요 시간 − 240) 을 24로 나눈 몫이고, 이자는 지급액 × 54 × 지연일수 ÷ 365000 의 몫입니다. 나눗셈은 마지막에 한 번만 하세요.

지연과 부당 부지급 보고서 쓰기

/root/ins/claim_report.md## 확인한 것, ## 지연은 어디서 생기는가, ## 부당 부지급, ## 권고, ## 반출하지 않은 것 다섯 절로 보고서를 쓰세요.

다섯 절이 필요합니다. 마지막 절은 무엇을 보고서에 담지 않았는지를 밝히는 자리입니다. 이 데이터에는 진단 코드가 들어 있습니다.