- 운영 철학 — 북극성
- 일일·주간·분기 루틴
- Arena 경연 — KPI Top 5는 어떻게 정해졌나
- KPI #1 — 월매출 성장률 (핵심)
- KPI #2 — 환자 미납률 (모니터링 등급)
- KPI #3 — 치료계획 전환율 (핵심)
- KPI #4 — VIP 환자 집중도 (핵심)
- KPI #6 — 수가별 매출 기여도 (보조)
- KPI #5 — 예약 노쇼율 (모니터링 등급)
- KPI #7 — 환자 이탈률 / 보유율 (핵심)
- KPI #8 — 신환율 / 월별 트래픽 (핵심)
- KPI #9 — 연령별 환자 분포 (모니터링)
- KPI #10 — 지역별 환자 분포 (모니터링)
- KPI #11 — 내원경로 / 미입력률 (핵심)
- 데이터 신선도와 신뢰
- 경고 발생 시 흐름
1. 운영 철학 — 북극성
- 흐름 우선 — 미수·오차가 약간 있어도 큰 흐름을 보는 게 더 가치있다.
- 조기 경보 — 정상 운영에서 벗어나는 신호를 빨리 캐치.
- 미래 대비 — 추세를 보고 의사결정에 활용.
- 자동화 우선, 수기 입력은 최후 수단.
이 철학과 충돌하는 결정을 만나면 docs/프로젝트.md §1-A를 갱신.
2. 일일·주간·분기 루틴
매일 (1분)
- 📊 대시보드 열기 — 카드 색깔(녹/주황/빨강) 한번 훑기
- 🔍 모니터링 — 데이터 신선도 25h 이내 확인
- 새 빌드 시각이 어제 05:00 이후인지 확인
매주 월요일 아침 (5분)
- KPI #3 (치료계획 전환율) 12개월 롤링 추세 — 임계값 70% 유지 여부
- KPI #1 최근월 YoY가 마이너스로 꺾였는지 — 단발/추세 판단
- 모니터링 페이지 검증 메시지 확인
분기 1회 (30분)
- KPI #2 (환자 미납률) — Top 미납 환자 점검 (가족·특수관계인 제외 시 진짜 미수)
- 전체 KPI 임계값이 여전히 합리적인지 재검토
- 모니터링 — 핵심 테이블 row count가 자연스럽게 늘어나는지 (덴트웹 백업·추출 자동화 건강성)
3. Arena 경연 — KPI Top 5는 어떻게 정해졌나
3개 AI(GPT-5.4 / Gemini-3-Flash / Claude Sonnet 4)가 재무·시장·리스크 관점으로 합의한 결과. 100+ 분석 영역 카탈로그에서 시작해, 의사결정에 직결되는 5개로 좁힘.
| 순위 | KPI | 임계값 | 구현 상태 |
|---|---|---|---|
| 1 | 월별 매출 성장률 (YoY) | ≥ 5% | 🟢 구현 완료 (KPI #1) |
| 2 | 환자 미납률 (재정의) | ≤ 1% | 🟦 모니터링 등급 (KPI #2 — 실효 미수 사실상 0) |
| 3 | 치료계획 전환율 | ≥ 70% | 🟢 구현 완료 (KPI #3) |
| 4 | VIP 환자 집중도 | 60–80% | 🟢 구현 완료 (KPI #4) |
| 5 | 예약 노쇼율 | ≤ 8% | ⏳ 미구현 — 이행현황 코드 매핑 필요 |
| + | 수가별 매출 기여도 (보조) | Top 20% 70~80% | 🟢 구현 완료 (KPI #6 Pareto) |
4. KPI #1 — 월매출 성장률핵심
한 줄 정의
(당월 총수납 − 전년 동월 총수납) ÷ 전년 동월 총수납 × 100. 헤드라인 카드는 12개월 누적 YoY — 단발 변동 노이즈 제거.
임계값
🟢 좋을 때 (≥ 5%)
- 일회성 효과(대형 케이스 마감)인지, 추세인지 구분 — 12개월 롤링이 따라 올라가는지 확인.
- 진료 캐파 한계 도달 여부 점검 (예약 적체·신환 거절 등).
🔴 마이너스로 꺾였을 때
- 진료과목별·담당의별·결제수단별 분해 — 어디서 빠지는지.
- 같은 시점 환자 수 변화 확인 — 방문 자체 감소 vs 객단가 감소.
- 마케팅 채널별 신환 추이 점검.
📋 정의서 전체: 01_revenue_growth.yaml
5. KPI #2 — 환자 미납률모니터링 등급
왜 모니터링 등급?
2026-05-05 확인 결과 Top 미납 환자가 원장 가족·특수관계인. 회수 대상 아님 → 실효 미수 사실상 0. 매일 보지 말고 분기 1회 추세만 점검.
한 줄 정의
(환자몫 − 환자수납) ÷ 환자몫 × 100. 공단부담금은 100% 회수 가정 (덴트웹 화면의 '미수금' 91.8%는 공단부담금 시차).
임계값
📌 12개월 누적이 3% 초과로 올라갈 때
- 미납 Top 환자 리스트 점검 — 가족·특수관계인 제외하면 진짜 미수.
- 본인부담 면제 처리 누락 여부 확인.
- 분기 회수 콜 검토.
📋 정의서: 02_patient_unpaid.yaml
6. KPI #3 — 치료계획 전환율핵심
한 줄 정의
치료계획 라인 중 실행 완료(상태=3) 비율. 상담 → 실제 처치로 얼마나 이어지는지. 9년 누적 73.6% (3856/5238). 임계값 70% 초과.
임계값
🔴 낮은 전환율 발견 시
- 상담자별·담당의사별 전환율 분해 — 특정 인물에서 누수가 큰가.
- 미전환(상태 0/1/2)이 많은 진료과목 식별 — 어떤 케이스가 안 잡히는지.
- 가격대별 전환율 — 고액 케이스가 안 잡히는지 (가격 협상·할부 옵션 검토).
🔴 갑자기 급락한 추세
- 신규 상담실 인원 변경·휴직 등 운영 변화 점검.
- 시즌·외부 요인 (경기·코로나류) 영향 확인.
7. KPI #4 — VIP 환자 집중도핵심
한 줄 정의
상위 20% 환자가 만든 매출 ÷ 총매출. 12개월 윈도우(헤드라인)와 9년 누적(장기 추세) 병행. 12M 70.4%, 9년 74.3% — 모두 건강한 Pareto.
임계값
🔴 너무 낮으면 (충성층 부족)
- 신환 의존도 점검 — 신환 비중·평균 객단가
- VIP 케어 프로그램 검토 (검진 알림·생일 메시지)
🔴 너무 높으면 (의존 과다)
- VIP Top N RFM 추적 — 이탈 신호 조기 감지
- 신규 VIP 발굴 (잠재 케이스 큰 환자 식별)
📋 정의서: 04_vip_concentration.yaml
8. KPI #6 — 수가별 매출 기여도 (Pareto, 보조)핵심
한 줄 정의
어느 수가(처치 항목)가 매출을 견인하는지. Top 30이 매출 73.0% 차지 — Pareto 80/20 정상 범위. 임플란트·보철 같은 고액 케이스가 leverage point.
임계값 (Top 20% 수가의 매출 비중)
📌 활용
- Top 매출 수가의 월별 추이 별도 추적 — 임플란트 N1A050, 지르코니아 L1Z011 등
- 시술자별·환자세그먼트별 분해
- 신규 케이스 mix 변화 (보험 vs 임플 vs 보철 vs 보존)
9. KPI #5 — 예약 노쇼율모니터링
📅 예약 노쇼율 — 슬롯 손실 신호
분류: TB_예약목록보관.n이행현황
- 이행 (1): 환자가 와서 진료 완료
- 사전취소 (코드 2 AND
x변경내역XML의 '예약 취소' 시각 < 예약시각): 슬롯 회수 여지 있음 - 노쇼 (코드 2 AND 취소 시각 ≥ 예약시각): 슬롯 손실 — 헤드라인 지표
- 코드 0 (직원 메모성 예약): 분석 제외
헤드라인: 노쇼율 = 노쇼 / (이행 + 노쇼). 12개월 롤링.
🟢 양호할 때
이행률 95%+. SMS 리마인더와 사전 콜이 잘 작동하는 상태. 분기 1회 추세 점검.
🔴 신호 들어올 때
- SMS 리마인더 시점·횟수 점검 (전일 + 당일 아침이 표준)
- 노쇼 환자는 다음 예약 시 사전 확인 콜 도입
- 월별 노쇼율 추이에서 특정 월에 튀는지 확인 (계절성, 인근 행사 등)
10. KPI #7 — 환자 이탈률 / 보유율핵심
👥 환자 이탈률 — 진짜 매출 누수 신호
분류 (TB_환자정보.sz최종내원일 vs 오늘):
- 활성 (≤6M): 강한 케어 진행 중
- 준활성 (6~12M): 정기 점검 권유 시점
- 위험군 (1~2년): 리콜 콜 1순위 — 곧 영구 이탈
- 장기 휴면 (2년+): 리콜 캠페인 대상
헤드라인: 12M 활성 환자 보유율 = (12개월 내 내원) / (내원 이력 알려진 전체 환자).
🟢 양호할 때
유지 보수 단계. 분기 1회 추세 점검. 24M 활성 환자 추이가 우상향이면 환자 기반 성장 중.
🔴 신호 들어올 때
- 위험군(1~2년) Top N 환자 리콜 콜 — 누적 매출 큰 환자부터. 영구 이탈 전 회복할 마지막 기회
- 정기 점검 SMS / 보험 만기 알림 자동화 검토
- 월별 활성 환자 수 추이가 평행 또는 우하향이면 신규 유입 부족 → 마케팅 재검토
- 장기 휴면(2년+)은 ROI 낮으니 리콜 캠페인은 1~2년 위험군에 집중
11. KPI #8 — 신환율 / 월별 트래픽핵심
🆕 신환 유입 + 트래픽 추이
정의:
- 신환 = 그 월에 처음 등록된 환자 (
TB_환자정보.sz등록시각YYYYMM 매칭) - 접수환자수 = 그 월에 진료비내역 발생한 distinct 환자
- 진료일수 = 그 월에 진료비내역 있는 distinct 일자
- 일평균 신환 = 신환수 / 진료일수 — 휴진 영향 제거된 진짜 유입 신호
헤드라인: 12M 일평균 신환.
🟢 양호할 때
유입 안정. 환자 보유율(KPI #7)과 같이 보면 funnel 건강 상태 진단 가능.
🔴 신호 들어올 때
- 마케팅 채널 점검 — KPI #11(내원경로 분포) 함께 확인
- 월별 추세가 꾸준히 우하향이면 신환 마케팅 강화 검토
- 접수환자 수도 같이 떨어지면 단순 마케팅 문제가 아님 — 운영 전반 점검
12. KPI #9 — 연령별 환자 분포모니터링
👤 연령 다양성과 매출 견인층 의존도
정의: 활성 환자 (12M 진료비내역 발생) + 신환 (12M 등록) 의 10년 단위 연령대 분포.
헤드라인: 30-59세 활성 환자 비중 — 임플란트·보철 등 고가 진료 핵심 연령층.
🟢 양호할 때
신환 평균 연령과 활성 평균 연령을 비교 — 비슷하면 자연 갱신, 신환이 더 어리면 젊은 층 유입 활발.
🔴 신호 들어올 때
- 특정 연령에 의존하면 그 세대 인구 변동에 취약
- 마케팅 채널·진료 메뉴를 다른 연령층 친화적으로 확장 검토
- 연령대별 평균 진료비 차트로 어디에 매출이 몰리는지 확인
13. KPI #10 — 지역별 환자 분포모니터링
📍 환자 유입 지역 의존도
정의: 12M 활성 환자의 시/구 단위 분포 (TB_환자정보.sz주소의 시/구/동 부분).
주소는 추출 시 시/구/동까지만 보존 (번지·도로명·건물명 제거 — privacy 유지).
헤드라인: Top 1 시/구 비중 — 한 지역에 의존하면 그 지역 변화에 취약.
🟢 양호할 때
지역 다양성 좋음. 광역 마케팅으로 신환 채널 확대 검토.
🔴 신호 들어올 때
- Top 지역의 인구 변동·경쟁 의원 진입 모니터링
- 인근 새 지역에 마케팅 펼쳐 분산 시도
- 주소 미상률이 높으면 등록 시 주소 입력 점검 (KPI #11 미입력률과 함께)
chart-birth 모드의 주소 truncate 기능이 가동된 후 데이터가 채워짐. 처음 빌드는 "데이터 대기 중" 안내 페이지가 표시됨.14. KPI #11 — 내원경로 / 미입력률핵심
📍 마케팅 채널 ROI 측정 가능 여부
정의: 12M 신환의 n내원경로 분포. 코드 0 또는 미매칭 = '미입력'.
헤드라인: 신환 미입력률. 이게 높으면 채널별 ROI 분석 자체가 불가능 — 우선 입력률부터 잡아야 한다.
🟢 양호할 때
채널별 평균 진료비 비교로 ROI 분석 가능. 고가치 채널에 마케팅 예산 집중. 가족소개·블로그·인터넷 검색 등 채널별 신환 1인당 평균 진료비 차이가 운영 의사결정 근거.
🔴 신호 들어올 때 (현재)
- 최우선 — 데이터 입력 프로세스: 신환 등록 시 내원경로를 필수 필드로 변경
- 데스크 직원 교육 — 환자에게 자연스럽게 묻는 스크립트 정착
- 입력률 70%+ 도달해야 채널별 의사결정에 신뢰 가능
- 주간 미입력 환자 리스트를 데스크에 피드백 (지속 개선)
15. 데이터 신선도와 신뢰
모니터링 페이지의 '데이터 신선도' 카드는 SQLite 추출 시각 기준.
- ≤ 25h: 정상. 매일 02:00 자동 추출이 잘 돈 상태.
- 25~48h: 경고. 추출이 한 번 빠짐 — 어제 또는 오늘 새벽 추출 task 실패 가능.
- > 48h: 실패. 빌드 자체 중단 (Last Known Good 유지). 모니터링 페이지의 검증 메시지 확인 + Task Scheduler 점검.
16. 경고 발생 시 흐름
- 🔍 모니터링 페이지 열기 — 어디서 막혔는지 빠르게 확인.
- 검증 메시지 / 빌드 로그 마지막 40줄 확인.
- 핵심 테이블 row count가 비정상으로 떨어졌으면 추출 단계 의심.
- 최근 빌드 이력에서 마지막 성공 시각 확인 — 며칠째 fail인지.
- docs/runbook.md 따라 복구.
- 해결 후
Start-ScheduledTask -TaskName "Clinic KPI Daily Build"로 즉시 재빌드.