중복환자 정리¶
이 페이지에서 찾을 수 있는 것
중복환자 / 동명이인 / 환자 중복 / 정합성 봇 7번 / 빈 환자 삭제 / 일괄 삭제 / 환자 병합 / 부모 자녀 / 강제 등록
같은 이름과 휴대폰 번호로 여러 번 등록된 환자(중복환자)를 식별하고 정리하는 가이드입니다. 정합성 봇 7번 알림에 대응하는 핵심 작업.
중복환자 발생 원인¶
| 원인 | 케이스 | 처리 |
|---|---|---|
| 환자 등록 시 자동 검사 우회 | 강제 등록 모드 사용 | 의도적 동명이인 (부모/자녀 같은 번호) |
| 정합성 봇 fix 이전 데이터 | 4/21 김강희 5명 같은 누적 데이터 | 정리 대상 |
| 마이그레이션 시 발생 | 옛 시스템에서 가져온 중복 | 정리 대상 |
| 시스템 결함 (드물게) | 동시에 두 직원이 등록 | #dev 문의 |
자동 차단 (work-item 24 적용)¶
2026-05-01 fix 적용 후 신규 등록 시점에 자동 차단:
- 휴대폰 번호 입력 → 자동 중복 검사
- 중복 발견 시 모달 → 2가지 선택:
- "기존 환자 정보 불러오기" (재방문)
- "신규 등록 (강제)" (의도적 동명이인)
→ 향후 중복 발생 빈도 크게 감소.
정리 단계¶
Step 1 — 정합성 봇 알림 확인¶
매일 06:00 슬랙 알림 예시:
*환자 중복* 4건:
- 김호영(010-2540-0897) 4명 [20260321000001,20260321000002,20260321000003,20260321000005]
📘 상세: https://manual-jjang.genaidev.io/operations/integrity-issues/#issue-7
Step 2 — 환자 검색¶
- 메뉴 > 환자관리 > 환자 검색
- 봇 메시지의 이름 또는 휴대폰 번호로 검색
- 동명이인 4명 표시됨
Step 3 — 활동 데이터 식별¶
각 환자를 클릭하여 진입 → 차트/예약/결제 활동 확인:
| 환자 | 차트 | 예약 | 결제 | 분류 |
|---|---|---|---|---|
| 환자A | 5건 | 3건 | 800만 | 활동 환자 (보존) |
| 환자B | 0건 | 0건 | 0원 | 빈 환자 (삭제 대상) |
| 환자C | 0건 | 1건 (취소) | 0원 | 빈 환자 (삭제 대상) |
| 환자D | 0건 | 0건 | 0원 | 빈 환자 (삭제 대상) |
Step 4 — 빈 환자 일괄 삭제¶
- 환자 검색 결과에서 빈 환자 체크박스 선택
- 하단 "선택환자 삭제" 버튼 (Level 1~2 관리자 권한 필요)
- 확인 모달 → 삭제 처리
- 시스템 자동:
status='deleted'soft delete (이력 보존, 검색 결과 비표시)
Step 5 — 다음날 06:00 봇 점검¶
- 정합성 봇이 deleted 환자 제외 (work-item 23 fix)
- 알림에서 자동 사라짐
둘 다 활동 있는 환자 (병합 필요)¶
같은 환자가 두 번 등록되어 양쪽 모두 차트/결제가 있는 경우:
→ 자체 처리 불가. 다음 정보 슬랙 #dev 채널에 전달: 1. 두 환자의 chart_no 2. 두 환자가 같은 사람임을 확인한 근거 (휴대폰/주민번호 등) 3. 어느 차트번호로 통합할지 (보통 먼저 등록된 chart_no)
→ 개발팀이 수동으로 데이터 병합 (차트/예약/결제를 한 환자로 이전 후 다른 환자 deleted).
실무 시나리오¶
시나리오 1 — 신규 등록 시 자동 차단된 환자 (재방문 케이스)¶
- 환자가 다시 내원해서 데스크가 신규 등록 시도
- 휴대폰 번호 입력 → 자동 중복 검사 발동
- 모달 표시: "이미 등록된 환자가 있습니다 (홍길동, 차트번호 26000123)"
- "기존 환자 정보 불러오기" 선택
- 차트번호/이름이 자동 채워짐 → 그대로 진행 (중복 등록 방지)
시나리오 2 — 봇 알림 일괄 정리¶
- 매일 06:00 슬랙에 "환자 중복 N건" 알림
- 환자 검색으로 봇 메시지의 이름/번호 검색
- 동명이인 N명 표시 → 각 환자 클릭하여 차트/예약/결제 확인
- 빈 환자(차트 0, 예약 0, 결제 0)만 체크박스 선택
- "선택환자 삭제" 버튼 (Level 1~2 관리자 권한)
- 확인 모달 → 삭제 처리 (soft delete, 이력 보존)
- 다음 날 06:00 봇 알림 자동 해소 확인
시나리오 3 — 부모/자녀 같은 번호 (의도적 동명이인)¶
- 어머니가 자녀 진료를 위해 본인 번호로 자녀 등록 시도
- 휴대폰 입력 → 중복 모달
- "신규 등록 (강제)" 선택 (의도적 분리)
- 자녀 정보(이름/생년월일/주민번호 다름)로 별도 환자 생성
- 정합성 봇은 휴대폰 + 이름 동일 여부로 판단하므로 이 케이스는 알림 안 뜸
시나리오 4 — 둘 다 활동 있는 환자 발견¶
- 환자 검색에서 동명이인 2명 발견
- 양쪽 다 차트/결제 활동 있음 (위 표 참고)
- 자체 처리 불가 → 슬랙 #dev 채널에 다음 정보 전달:
- 두 환자의 chart_no
- 같은 사람 확인 근거 (휴대폰/주민번호/이름)
- 통합할 chart_no (보통 먼저 등록된 것)
- 개발팀이 수동 병합 처리
시나리오 5 — 잘못 삭제한 환자 복구¶
- 빈 환자 일괄 삭제 후 "사실 활동 있는 환자였다" 발견
- 자체 복구 불가 → 슬랙 #dev 채널에 chart_no + 복구 사유 전달
- soft delete이므로 status='deleted'를 'active'로 되돌리면 복구 (개발팀 처리)
삭제 전 활동 데이터를 꼼꼼히 확인하세요. 차트 1건이라도 있으면 보존이 안전합니다.
자주 묻는 질문 / FAQ¶
Q. 봇 알림에 4명이 떴는데 4명 모두 빈 환자입니다. 모두 삭제해도 되나요?
실제로 활동 있는 환자가 1명이라도 있는지 다시 확인하세요. 모두 빈 환자면 가장 먼저 등록된 1명만 보존하고 나머지 3명 삭제. 만약 모두 빈 환자라면 봇 알림이 잘못된 케이스로 슬랙 #dev에 알려주세요.
Q. 빈 환자 일괄 삭제 후 환자가 다시 내원하면?
soft delete라 검색 결과에 안 보이지만 데이터는 남아있습니다. 환자 등록 시 휴대폰 번호로 자동 중복 검사가 발동되어 "기존 환자 정보 불러오기"로 복구 가능합니다. 단 deleted 환자는 복구 시 #dev 문의 필요.
Q. 의도적 동명이인(부모/자녀)도 매일 봇 알림에 떠요
봇은 "이름 + 휴대폰 동일 + 다른 chart_no" 케이스를 감지합니다. 이름이 같으면 알림 발생. 자녀 이름을 다르게 변경하거나 (등록 시 실명) #dev에 운영 패턴 전달하면 봇 정책 보강 검토 가능합니다.
Q. 차트번호(chart_no)와 환자UID(patient_uid)가 어떻게 다른가요?
- chart_no: YY + 6자리 (예:
26000123) — 직원이 사용하는 식별자 - patient_uid: YYYYMMDD + 6자리 (예:
20260321000001) — 시스템 내부 식별자 - 두 값은 1:1 대응. 환자 검색에서는 어느 쪽으로도 검색 가능.
Q. "선택환자 삭제" 버튼이 회색으로 비활성화되어 있어요
Level 1~2 관리자 권한이 필요합니다. 권한이 없으면 슬랙 #dev에 chart_no 목록을 전달하면 개발팀이 처리합니다.
권한별 차이¶
| 기능 | 권한 |
|---|---|
| 환자 검색 / 동명이인 식별 | 🟢 모든 직원 |
| 선택환자 삭제 (bulkDelete) | 🔴 Level 1~2 관리자 |
| 활동 있는 환자 병합 | 🔴 #dev 문의 (자체 처리 불가) |