docs: V1 PS_Main_Sub 선별급여/상한제 스키마 분석 추가

V1 PharmIT3000 구조 분석:
- PS_Main: 처방헤더 (PRICE_N만, 합산 안됨)
- PS_Main_Sub: 처방 부가정보 (SE_PRICE_P_80 등 선별급여 컬럼 있음!)
- CD_SUNAB: 수납 (ETC_CARD에 합산 결과 저장)

V1 버그 원인:
- 수납 화면에서는 PS_Main + PS_Main_Sub JOIN해서 계산
- CD_SUNAB.ETC_CARD에 정확히 저장
- 하지만 PS_Main.PRICE_N은 업데이트 안 함

SE_PRICE 컬럼 이력:
- PS_Main_Sub 테이블: 2010년 초기 스키마에 생성
- SE_PRICE_P_* 컬럼: 선별급여 제도 시행 후 추가
- 실제 데이터: 2026년부터 6건 존재

V2 PMPLUS20 개선:
- REAL_PRICE에 모든 항목 합산해서 저장
- 수납테이블 RECP_AMT와 일치 보장
This commit is contained in:
root
2026-04-01 15:26:58 +00:00
parent 75559a78f9
commit bc0c282eaf

View File

@@ -225,15 +225,58 @@ REAL_PRICE = 19,700 + 12,000 = 31,700 (진짜 수납액)
v1 PRICE_N = 19,700 ← 선별급여분 누락! v1 PRICE_N = 19,700 ← 선별급여분 누락!
``` ```
#### v1 PRICE_N 버그 원인 #### v1 스키마 분석: 선별급여/상한제 데이터는 어디에?
PharmIT3000`PRICE_N`은 다음 항목을 미포함: **V1 PharmIT3000에도 데이터는 있다!** `PS_Main_Sub` 테이블에 저장됨:
- `EXP_UNDER_EXE_PRICE`: 상한제초과 본인부담
- `SE_PRICE_P_80/90/50`: 선별급여 본인부담
PMPLUS20의 `REAL_PRICE`는 이 모두를 포함한 **실제 결제금액**이며, 수납테이블(TBSIR000_01)의 `RECP_AMT`와 일치함. ```sql
-- V1 PharmIT3000에서 선별급여/상한제 확인
SELECT
m.PreSerial, m.PRICE_N,
s.SE_PRICE_P_80, -- 선별급여 80% 본인부담
s.SE_PRICE_P, -- 선별급여 본인부담 합계
c.ETC_CARD -- 실제 수납액
FROM PS_Main m
JOIN PS_Main_Sub s ON s.PreSerial = m.PreSerial
JOIN CD_SUNAB c ON c.PRESERIAL = m.PreSerial
WHERE s.SE_PRICE_P > 0
```
**결론**: `REAL_PRICE` 매핑 유지가 맞음. 차이는 시스템 개선에 의한 정상 차이. **V1 테이블 구조:**
| 테이블 | 역할 | 선별급여/상한제 |
|--------|-----|-------------------|
| `PS_Main` | 처방 헤더 | ❌ `PRICE_N`만 (합산 안됨) |
| `PS_Main_Sub` | 처방 부가정보 | ✅ `SE_PRICE_P_80`, `SE_PRICE_P` 등 |
| `CD_SUNAB` | 수납 | ✅ `ETC_CARD`에 합산 결과 |
**검증 케이스 (V1):**
| 환자 | PS_Main.PRICE_N | PS_Main_Sub.SE_PRICE_P_80 | CD_SUNAB.ETC_CARD |
|------|----------------|--------------------------|------------------|
| 지성윤(차상위2) | 500 | 11,420 | 11,920 ✅ |
| 임해자(선별급여) | 19,700 | 12,000 | 31,700 ✅ |
**문제점**: `PS_Main.PRICE_N``PS_Main_Sub`의 선별급여/상한제 금액을 **합산하지 않음**.
#### 선별급여 컨럼 추가 이력
- `PS_Main_Sub` 테이블: **2010년 초기 스키마**에 생성
- `SE_PRICE_P_*` 커럼들: **나중에 추가됨** (선별급여 제도 시행 후)
- 실제 데이터: 2026년부터 6건 존재 (최근 사용 시작)
#### V1 수납 프로세스 (추정)
1. 수납 화면에서 `PS_Main` + `PS_Main_Sub` JOIN해서 총액 계산
2. 계산된 금액을 `CD_SUNAB.ETC_CARD`에 저장
3. **하지만** `PS_Main.PRICE_N`은 업데이트 안 함 (버그)
#### V2 PMPLUS20 개선 사항
PMPLUS20은 이 문제를 해결:
- `TBSID040_03.REAL_PRICE`**모든 항목 합산해서 저장**
- `EXP_UNDER_EXE_PRICE`, `SE_PRICE_P_80` 등 별도 컨럼도 유지
- 수납테이블(TBSIR000_01)의 `RECP_AMT`와 일치 보장
**결론**: `REAL_PRICE` 매핑 유지가 맞음. V1의 `PRICE_N` 버그를 V2에서 수정한 것.
### 보험구분별 (2026년 3월 전체 검증) ### 보험구분별 (2026년 3월 전체 검증)
| 보험구분 | v1 건수 | v2 건수 | 일치 | | 보험구분 | v1 건수 | v2 건수 | 일치 |