root bc0c282eaf 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와 일치 보장
2026-04-01 15:26:58 +00:00

Pharmacy Stats API

QT-POS 통계 다이얼로그 API 버전

구조

pharmacy-stats-api/
├── app.py                      # Flask 메인
├── config.py                   # DB 연결 설정
├── queries/
│   ├── v1_pharmit3000.py      # PharmIT3000 쿼리
│   └── v2_pmplus20.py         # PMPLUS20 쿼리
└── templates/
    └── stats.html             # 비교 UI

API 엔드포인트

v1 - PharmIT3000

Endpoint 설명
/v1/api/stats 전체 통계
/v1/api/stats/insurance 보험별 통계
/v1/api/stats/time 시간가산별 통계
/v1/api/stats/payment 결제수단별 통계
/v1/api/stats/hospital 병원별 통계

v2 - PMPLUS20

동일한 구조의 /v2/api/stats/... 엔드포인트

비교

Endpoint 설명
/api/compare v1 vs v2 비교

쿼리 파라미터

  • from: 시작일 (YYYYMMDD)
  • to: 종료일 (YYYYMMDD)

예: /v1/api/stats?from=20260401&to=20260401

테이블 매핑

역할 PharmIT3000 (v1) PMPLUS20 (v2)
판매 헤더 PM_PRES.PS_MAIN PM_MAIN.TBSIM040_28
판매 상세 PM_PRES.PS_SUB_PHARM PM_MAIN.TBSIM040_29
수납 정보 PM_PRES.CD_SUNAB PM_MAIN.TBSIR000_01
약품 마스터 PM_DRUG.CD_GOODS PM_MAIN.TBSIM040_01

실행

pip install -r requirements.txt
python app.py

서버: http://0.0.0.0:5060

환경변수

PHARMIT_SERVER=192.168.0.4\PM2014
PHARMIT_USER=sa
PHARMIT_PASS=password

PMPLUS_SERVER=192.168.0.4\PM2014
PMPLUS_USER=sa
PMPLUS_PASS=password
Description
QT-POS Stats API
Readme 131 KiB
Languages
Python 69.3%
HTML 30.7%