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와 일치 보장
- 일반 환자: REAL_PRICE = PRICE_N 정확히 일치 확인
- 특수 보험 환자 (차상위/선별급여):
- 지성윤(차상위2): 상한제초과분(EXP_UNDER_EXE_PRICE) 포함
- 임해자(선별급여): 선별급여80%(SE_PRICE_P_80) 포함
- v1 PRICE_N 버그: 상한제초과/선별급여분 미포함
- v2 REAL_PRICE = 수납테이블(TBSIR000_01)의 RECP_AMT와 일치
- 결론: REAL_PRICE 매핑 유지 (v1보다 정확한 실제 결제금액)
- config.py: PMPLUS20 서버(192.168.0.201\PMPLUS20) 및 SA 비밀번호 수정
- v2_pmplus20.py: PS_MAIN→TBSID040_03, CD_SUNAB→TBSIR000_01 매핑 적용
- 컬럼 매핑: PRICE_T→TOT_PRICE, PRICE_C→INS_PRICE, PRICE_P→EXE_PRICE 등
- Drug_T4 = NON_DRUG_PRICE + EXP_EXE_PRICE
- Holiday = HD_ADD + PRES_TIME_GUBUN 조합
- PreGubun = MPRE_TYPE (차상위 F 별도 처리)
- PRES_GUBUN='E' 재고보정 레코드 제외
- PMPLUS20_MIGRATION_GUIDE.md: 전체 매핑 가이드 문서 추가
- app.py: 포트 5060→5050 변경
20260324 기준 검증: 건수/금액/보험별/결제별 일치 확인
PRICE_N(수납) 2건 차이(23,420원)는 비급여 수납 처리 개선에 의한 정상 차이
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>