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:
@@ -225,15 +225,58 @@ REAL_PRICE = 19,700 + 12,000 = 31,700 (진짜 수납액)
|
||||
v1 PRICE_N = 19,700 ← 선별급여분 누락!
|
||||
```
|
||||
|
||||
#### v1 PRICE_N 버그 원인
|
||||
#### v1 스키마 분석: 선별급여/상한제 데이터는 어디에?
|
||||
|
||||
PharmIT3000의 `PRICE_N`은 다음 항목을 미포함:
|
||||
- `EXP_UNDER_EXE_PRICE`: 상한제초과 본인부담
|
||||
- `SE_PRICE_P_80/90/50`: 선별급여 본인부담
|
||||
**V1 PharmIT3000에도 데이터는 있다!** `PS_Main_Sub` 테이블에 저장됨:
|
||||
|
||||
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월 전체 검증)
|
||||
| 보험구분 | v1 건수 | v2 건수 | 일치 |
|
||||
|
||||
Reference in New Issue
Block a user